Создание событий в Mono.Cecil

Я пытался создавать события с помощью Mono.Cecil, но не знаю, как это сделать.

EventDefinition newEvent = new EventDefinition("newEvent", 
                                               Mono.Cecil.EventAttributes.None, 
                                               someRefToTheEventHandlerDelegate);

Я застрял на аддоне и частично удалил. Помогите мне, пожалуйста.


person Community    schedule 29.08.2011    source источник


Ответы (1)


Вам нужно будет добавить MethodDefinition для «add_newEvent» и «remove_newEvent» и назначить их экземпляру newEvent.

Простой способ узнать, как работает Cecil и как он хочет, чтобы все было настроено, это:

1) скомпилируйте то, что вы хотите в сборке (например, ваше событие, как вы этого хотите);

2) загрузите его с помощью Mono.Cecil

3) используйте отладчик (подойдет MonoDevelop или VisualStudio), чтобы увидеть, как все заполняется;

4) закодировать то же самое в своем приложении;

5) прибыль! ;-)

person poupou    schedule 29.08.2011
comment
Я надеялся, что мне не придется проходить через такой этап ^^ Я попробую, когда вернусь из школы. Спасибо, в любом случае! - person ; 30.08.2011
comment
это не очень сложно - вы уже знаете (1), Assembly.ReadDefinition(fileName) сделает (2), если вы находитесь внутри IDE, вы можете развернуть часы отладчика, чтобы увидеть MainModule, затем Type[x], затем Events[y], которые покажут методы добавления и удаления. (4) — это несколько строк кода, (5) — ваш приз ;-) и, что лучше всего, это решение можно применить почти ко всему, что вам когда-либо понадобится делать с Сесилом! - person poupou; 30.08.2011
comment
Спасибо, кроме кодификации кодов тела, что еще нужно принять во внимание? - person ; 30.08.2011