Я добавил событие в пользовательский элемент управления, и я вызываю событие в потребительском окне пользовательского элемента управления,Как компилятор генерирует код обработчика событий?
Мой вопрос: какой код генерирует компилятор, когда мы назначаем обработчик событий через среду IDE?
Чтобы я мог использовать что-то подобное, чтобы автоматически записывать обработчик событий во время выполнения.
Я знаю, что мы можем написать обработчик события, например, мой обработчик событий, который я пишу здесь:
SearchControl.SearchChangedEvent += new RoutedEventHandler(SearchControl_SearchChanged);
Ошибка выброшены в данном случае является то, что нет согласования перегрузки, так что я пытаюсь сделать то же самое что компилятор делает через код. Как компилятор автоматически знает аргументы?
EDIT: Решение.
Я нашел проблемную область, где я был смущен в этой статье: http://msdn.microsoft.com/hi-in/magazine/cc785480%28en-us%29.aspx
В «Обзор Бегство События» раздел, автор пишет:
Чтобы увидеть это, перейдите к конструктор для вашего класса, щелкните правой кнопкой мыши по вызову метода InitializeComponent , а выберите «Перейти к определению» из контекстного меню . Редактор отобразит файл сгенерированного кода (с присвоение соглашения .i.g.cs или .i.g.vb) , содержащий код, который обычно , сгенерированный во время компиляции.
Я нашел код за сгенерированным !!
#line 6 "..\..\Window1.xaml"
this.myButton.Click +=
new System.Windows.RoutedEventHandler(
this.myButton_Click);
Спасибо, за тех, кто был немного смущен постановкой проблемы. Надеюсь, теперь это станет ясно (я не мог объяснить проблему до тех пор, пока не нашел решение :)
Thanks Blindy ,,, Теперь я получаю то, что делает компилятор ...... Есть ли способ увидеть файл класса (если есть), который генерируется компиляцией? Думаю, что я видел что-то вроде этого, не могу вспомнить, хотя ... – 81967
Если вы имеете в виду ildasm.exe, он находится в папке 'C: \ Program Files \ Microsoft SDK \ Windows \ v6.0A \ bin', вы запускаете его , выберите свой скомпилированный двоичный файл, и он разобьет его для вас. Прошу прощения, если это не то, о чем вы просите, ваши вопросы немного неясны. – Blindy
Спасибо Блинди за вашу помощь ...... Я бы точно сказал вам ответ, как только я наткнулся на него. – 81967