Вопрос по events, c# – Можно ли подписаться на подписку на события в C #?

6

Если у меня есть такое событие:

public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;

И добавляет обработчик событий вот так:

MyEvent += MyEventHandlerMethod;

... тогда можно ли это как-то зарегистрировать? Другими словами - возможно ли иметь что-то вроде:

MyEvent.OnSubscribe += MySubscriptionHandler;

Ваш Ответ

5   ответов
1

Это возможно, если вы объявите свое пользовательское событие, как этоpseudocode:

class MyClass
{


    public event EventHandler MyEvent
    {
        add    {     //someone subscribed to this event  ! }
        remove {     //someone unsubscribed from this event ! }
    }


    ...
}
6

в частности, добавить и удалить методы доступа.

Это позволяет создавать собственную логику при добавлении новых обработчиков событий.

1

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

Проверьте информацию надобавлять а такжеУдалить ключевые слова.

11

события также реализуются автоматически по умолчанию.

Вы можете расширить декларациюevent следующее:

public event MyEventHandler MyEvent
{
    add
    {
        ...
    }
    remove
    {
        ...
    }
}

Смотрите, например,Как: использовать словарь для хранения экземпляров событий (Руководство по программированию в C #)

УвидетьСобытия немного пересмотрены в C # 4, Часть I: Замки для того, как автоматически реализуемые события отличаются между C # & # xA0; 3 и C # & # xA0; 4.

Error: User Rate Limit Exceeded
1

вы ищете средства доступа к событиям. Способ настройки ссылок на подписчиков. Вот как вы можете это сделать

public class TestClass
{

   private event EventHandler UnderlyingEvent;
   public event EventHandler TestEvent
   {
        add
        {
             UnderlyingEvent += value;
        }
        remove
        {
             UnderlyingEvent -= value;
        }
   }
}

Для получения дополнительной информации, пожалуйста, посетите эту статью

http://msdn.microsoft.com/en-us/magazine/cc163533.aspx

Похожие вопросы