Показать сообщение отдельно
Старый 21.04.2008, 09:56   #3  
Peter Savintsev is offline
Peter Savintsev
Участник
 
246 / 119 (4) +++++
Регистрация: 14.12.2001
Можно сделать так, как советует IvanOFF. Но если передаваемых параметров много, то для каждого придется делать и вызывать метод parm*. Если класс А выполняется на клиенте, а класс В - на сервере (как это обычно и делается), то будет много клиент-серверных вызовов, что негативно скажется на производительности. Поэтому лучше делать следующим способом.

В classDeclaration класса А объявляете макрос (например, CurrentList) со списокм параметров (этот же макрос можно использовать для pack/unpack). Точно такой же макрос объявляете в classDeclaration класса В. Естественно, надо не забыть про объявление самих переменных. Затем в классе В реализуете метод, например setParams, принимающий контейнер. В классе А надо просто вызвать этот метод для передачи параметров.

Пример:
X++:
class A extends RunBase
{
    int myVar;
    NoYes newYear;

    #localmacro.CurrentList
        myVar,
        newYear
    #endmacro
}

void run()
{
    B b = new B();
    ...
    
    b.setParams(#CurrentList);
}
X++:
class B
{
    int myVar;
    NoYes newYear;

    #localmacro.CurrentList
        myVar,
        newYear
    #endmacro
}

void setParams(container _params)
{
    [#CurrentList] = _params;
}
Еще правильнее передавать список параметров при создании экземпляра класса B, т.е. в методе new.