Подтвердить что ты не робот

В С# Как вы создаете событие с настраиваемым обработчиком событий как часть интерфейса?

Каков правильный формат объявления обработчика события в интерфейсе, если вы используете собственный подкласс EventHandler, а не базовый класс EventHandler.

Я создаю подкласс EventHandler MyEventHandler, например, в объявлении делегата, но вы не можете объявить делегата в интерфейсе...

Когда я запрашиваю Visual Studio для извлечения интерфейса, он ссылается на EventHandler в IMyClassName как MyClassName.MyEventHandler, который явно играет хаос с типом связи.

Я предполагаю, что есть простой способ сделать это, мне нужно явно объявить обработчик событий в отдельном файле?

4b9b3361

Ответ 1

Ну, вам нужно определить аргументы и, возможно, делегировать где-нибудь. Вам не нужен нужен второй файл, но я бы рекомендовал его... но классы, вероятно, не были бы вложенными, если бы это была оригинальная проблема.

Рекомендация заключается в использовании стандартного шаблона "отправитель, аргументы"; есть два подхода cmmon:

1: объявить класс event-args отдельно и использовать EventHandler<T> на интерфейсе:

public class MySpecialEventArgs : EventArgs {...}
...
EventHandler<MySpecialEventArgs> MyEvent;

2: объявить класс event-args и тип делегирования отдельно:

public class MySpecialEventArgs : EventArgs {...}
public delegate void MySpecialEventHandler(object sender,
    MySpecialEventArgs args);
....
event MySpecialEventHandler MyEvent;

Ответ 2

Предполагая, что С# 2.0 или новее...

public class MyEventArgs: EventArgs
{
    // ... your event args properties and methods here...
}

public interface IMyInterface
{
    event EventHandler<MyEventArgs> MyEvent;
}