Массив делегата

Это потому, что класс Clothes не имеет конструктора с аргументом Size.

Вы можете добавить конструктора в одежду:

public Clothing(String size)
{
    this.size = size;
}

Или изменить конструктор джинсов:

public Jeans(String size, String color)
{
    super(size, color);
}
9
задан Joel Coehoorn 19 November 2008 в 18:13
поделиться

3 ответа

Если они являются всеми одинаковыми тип, почему не только комбинируют их в единственного многоадресного делегата?

static pd delegateInstance = new pd(MyClass.p1) + new pd(MyClass.p2) ...;

...
pd();
14
ответ дан 4 December 2019 в 07:15
поделиться
public class MainClass
{
    static void Main()
    {
        pd[0]();
        pd[1]();
    }
}
7
ответ дан 4 December 2019 в 07:15
поделиться

В .NET любой делегат является на самом деле на самом деле "многоадресным" делегатом (он наследовался этому встроенному базовому классу), и поэтому содержит внутренний связанный список, который может содержать любое число целевых делегатов.

Можно получить доступ к этому списку путем называния метода GetInvocationList () на делегате самим. Этот метод возвращает массив Делегатов...

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

Но если это в порядке, то можно "позвонить" делегатам в списке вызова данного делегата как это:

public delegate void MessageArrivedHandler(MessageBase msg);
public class MyClass
{
     public event MessageArrivedHandler MessageArrivedClientHandler;   

     public void CallEachDelegate(MessageBase msg)
     {
          if (MessageArrivedClientHandler == null)
              return;
          Delegate[] clientList = MessageArrivedClientHandler.GetInvocationList();
          foreach (Delegate d in clientList)
          {
              if (d is MessageArrivedHandler)
                  (d as MessageArrivedHandler)(msg);
          }
     }
}
7
ответ дан 4 December 2019 в 07:15
поделиться
Другие вопросы по тегам:

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