Здравствуйте, VladD2, Вы писали:
VD>А можно прислать мне проект воспроизводящий ошибку? Желательно, чтобы в нем не было ничего лишнего, только описанная проблема. Тогда я постараюсь посмотреть, что происходит, и если получится, поправить баг в компиляторе или объяснить как нужно действовать.
Макрос:
[MacroUsage(MacroPhase.BeforeTypedMembers, MacroTargets.Class)]
public macro CreateEvents(tb : TypeBuilder) {
Helper.CreateEvents(tb, [ "Foo", "Bar" ]);
}
module Helper {
public CreateEvents(tb : TypeBuilder, events : list[string]) : void {
foreach(name in events) {
BuildEvent2(tb, name, <[ System.EventHandler ]>);
}
}
private BuildEvent2(tb : TypeBuilder, name : string, evt_type : PT.PExpr) : void {
tb.Define(<[ decl:
public event $(name : usesite) : $evt_type;
]>);
}
}
Использование:
[CreateEvents] class C1 { }
Ошибки вида:
mutable _N__N_event_field_of__name___usesite__3262 : System.EventHandler; redefined in 'C1'
redefinition of method C1.add_(name : usesite)(value : System.EventHandler) : void
Текст (name : usesite) наводит на определенные мысли...