Кто нибудь пытался декларировать эвенты в макросах ?
То ли баг то ли еще что , но не хочет декларировть эвенты с одним и тем же типом.
даже если add / remove декларировать в ручную
Как мне кажется изза того что опускается имя эвента
ошибка:
redefinition of method TestClass.add_(value : EventType)
redefinition of method TestClass.remove_(value : EventType)
...
в обычном коде он декларирует
TestClass.add_EventName(value : EventType)
TestClass.remove_EventName(value : EventType)
30.01.07 18:16: Перенесено модератором из 'Декларативное программирование' — IT
Сам же и отвечу.
Обошел проблему определив в ручную add remove для эвента
и перезаписав имена :
def ev = <[ ... ]>
ev.add.name=Splicable.Name(Name("add_"+eventName));
ev.remove.name=Splicable.Name(Name("remove_"+eventName));
Здравствуйте, chudo19, Вы писали:
Покажи полный код макроса.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Здравствуйте, VladD2, Вы писали:
VD>Покажи полный код макроса.
Изначальный код показать не могу уже,
показываю к чему пришел.
//Cannot declare simple event, fixing names will be harder.
//We will declare custom event add/remove:
def e = Splicable.Name(eventRef.name);
def ev = <[ decl:
public event $(e):DelegateType {
add
{
$(("_"+eventName):dyn) = Delegate.Combine($(("_"+eventName):dyn), value):>DelegateType ]) ;
}
remove
{
$(("_"+eventName):dyn) = Delegate.Remove($(("_"+eventName):dyn) , value):>DelegateType ]) ;
}
}
]>;
//HERE GOES FIXUP PREVENTING EMPTY NAMES
ev.add.name=Splicable.Name(Name("add_"+eventName));
ev.remove.name=Splicable.Name(Name("remove_"+eventName));
t.Define(ev);
t.Define(<[ decl:mutable $(("_"+eventName):dyn):DelegateType ]>)