2015-07-01 2 views
0

Я прохожу курс по разработке расширяемого программного обеспечения на множественном числе и в одном из слайдов, этот код появляется. До сих пор я понимаю делегата, что он используется для обозначения других методов, но я не могу понять, для чего здесь цель делегата, и если кто-нибудь может указать мне в правильном направлении, пожалуйста.Понимание делегатов Generics

enter image description here

ответ

1

Как написано там, это не очень полезно ... Они могли бы использовать Action<OrderItemProcessedEventArgs>, и это было бы эквивалентно. (Action<> является родовым делегат методы, которые ничего не возвращают. Его официальное описание что-то вроде Инкапсулирует метод, который имеет один параметр и не возвращает значение.)

Делегат, как написано (и Action<OrderItemProcessedEventArgs>) представляют метод, который возвращает void (так что ничего не возвращает) и принимает один аргумент OrderItemProcessedEventArgs. Так, например:

public void MyMethod(OrderItemProcessedEventArgs arg) 
{ 
} 

будет способом, совместимым с этим делегатом.

Теперь ... этот большой блок кода создает CommerceEvents, который представляет собой контейнер событий (не C# - event s, непосредственно делегирует), что некоторые фрагменты кода могут «подписаться», назначив методы свойства (OrderItemProcessed в этом случае). Некоторые другие коды, при необходимости, вызовут OrderItemProcessed(someOtherItemProcessedEventArgs), передав «дескриптор», почему было выполнено «событие» (класс OrderItemProcessedEventArgs)

+0

ok. делегаты, которых я знаю, они используются как этот CommerceModuleDelegate = pointtoamethod, а затем CommereceModuleDelegate («Passsomevalue»). Однако в этом случае он передает класс в качестве параметра, но где он будет выполнен? – Baahubali

+0

@ user1490835 Прочитать добавленную часть – xanatos

+0

@ user1490835 Они реализуют шаблон [Observer] (https://en.wikipedia.org/wiki/Observer_pattern), с тем, что вызывается в wiki *, поддерживает список своих иждивенцев, называемый наблюдатели * являются свойством 'OrderItemProcessed'. – xanatos

-2

Делегат вы заявили, представляет какой-либо метод, который принимает общий T аргумент и возвращает ничтожным. T может быть любым классом. Вы также можете ознакомиться с делегатами Func и Action, которые также носят общий характер.

Смежные вопросы