2010-09-30 2 views
0

У меня есть интерфейс с событием. Мой класс реализует интерфейс.Как уловить подписку на событие?

Логика класса требует фиксации всех фактов подписки и отмены подписки на событие.

Как осуществить подписку на перехват и отказаться от подписки на мероприятие?

+2

Почему это пометка "сообщество вику? – Ani

+0

Извините. Флаг «community wiki» - ошибка. – SkyN

+0

Если вы хотите использовать IDE, щелкнув правой кнопкой мыши по интерфейсу в классе и решив реализовать явно, вы действительно получите получателя/сеттера, которым вы пользуетесь. –

ответ

3

Попробуйте это:

private event EventHandler<EventArgs> shibby; 

    public event EventHandler<EventArgs> Shibby 
    { 
     add 
     { 
      // your logic here 
      this.shibby += value; 
      // or here 
     } 
     remove 
     { 
      // your logic here 
      this.shibby -= value; 
      // or here 
     } 
    } 
2

Ну, если вы определенно необходимость перехватывать подписки:

private EventHandler fooEventHandler; 

public event EventHandler Foo 
{ 
    add 
    { 
     // Put any extra logic in here 
     fooEventHandler += value; 
    } 
    remove 
    { 
     fooEventHandler -= value; 
    } 
} 

(Обратите внимание, что если вам нужна безопасность потоков, вам необходимо изменить код, указанный выше.)

Но если вы используете поле типа события, например:

public event EventHandler Foo; 

, то вы можете «отписаться» все просто написав (в классе):

Foo = null; 
Смежные вопросы