Модел на наблюдател, внедрен в C# с делегати?

Вече има отговор на въпрос, който е в C#, не Моделът на наблюдателя не е вече внедрен чрез Събития?

Той пита дали моделът на наблюдателя вече е имплементиран в c# с помощта на събития.

Въпреки че получавам събитията и модела на наблюдателя, не е ли моделът на наблюдател наистина само делегати и събитията е по-нататъшно изпълнение?


person Coding Monkey    schedule 21.06.2009    source източник
comment
Бихте ли разяснили въпроса си? Явно си наясно с другия въпрос и отговора му, така че май питаш нещо в допълнение, но не ми е ясно какво е то.   -  person Mark Seemann    schedule 21.06.2009


Отговори (1)


Прав си. Едно събитие е просто делегат с малко по-различна функционалност. Целият модел на наблюдател може да бъде приложен с делегати, без изобщо да се докосва ключовата дума event.

Тогава може да се заинтересувате какво всъщност носи ключовата дума „събитие“ на масата.

  • Събитията могат да бъдат част от интерфейс, докато обикновеното делегатно поле не може
  • Събитията не могат да бъдат извиквани от външни класове, но обикновените делегати могат
  • Събитията имат допълнителни инструменти за достъп (добавяне и премахване), които можете да замените и да предоставите персонализирана функционалност

Редактиране: Ето страхотно описание със сравнение на IL код между събития и делегати. (Съвет: почти е същото).

person womp    schedule 21.06.2009
comment
@womp, по отношение на първия ти куршум, Action<T> не е ли делегат, който може да бъде част от интерфейс? - person Matt; 14.06.2015
comment
@womp, по отношение на първия ти куршум, Action<T> не е ли делегат, който може да бъде част от интерфейс? public interface ITest { void SupplyCallbackMethod(Action<int> callback); } - person Matt; 14.06.2015