Преобразование событий C # в VB.NET - PullRequest
0 голосов
/ 20 июня 2009

Портирование приложения из C # (каркас 1.1) в VB.NET (3.5 каркас), и у меня возникла одна последняя проблема, связанная с событиями, которую я не могу понять.

Это оригинальный код C #

public delegate void SpecialEventHandler(object sender,SpecialEventArgs e);
public event SpecialEventHandler SpecialEvent = null;

_SpecialLogWriter  SpecialWriter = new _SpecialLogWriter(this.SpecialEvent);

Это преобразованный код VB.NET

Public Delegate Sub SpecialEventHandler(ByVal sender as Object, ByVal e as SpecialEventArgs)
Public Event SpecialEvent as SpecialEventHandler

Dim SpecialWriter as New _SpecialLogWriter(Me.SpecialEvent)

Конструктор SpecialLogWriter ожидает SpecialEventHandler, но Me.SpecialEvent в конструкторе SpecialLogWriter выдает мне сообщение об ошибке, что это событие и его нельзя вызвать напрямую.

Я скучаю по другому делегату, или это просто одна из проблем декларации между языками?

Ответы [ 2 ]

0 голосов
/ 21 июня 2009

Я вынужден задаться вопросом, правильно ли работал исходный код с самого начала. Я просто удалил тег события из объявления SpecialEvent, и на данный момент все работает.

0 голосов
/ 20 июня 2009

Вы говорите, что конструктор ожидает обработчик события, но вы передаете событие, а не обработчик события. Разве вы не должны использовать:

Dim SpecialWriter as New _SpecialLogWriter(New SpecialEventArgs())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...