Базовые классы System.MulticastDelegate и System.Delegate

Базовые классы System.MulticastDelegate и System.Delegate

Таким образом, при создании типов c помощью) ключевого слова delegate в C# вы неявно объявляете тип класса, являющегося производным от System.MulticastDelegate. Этот класс обеспечивает своим потомкам доступ к списку с адресами тех методов, которые поддерживаются типом делегата, а также предлагает несколько дополнительных методов (и ряд перегруженных операций), обеспечивающих взаимодействие со списком вызовов. Вот программный код некоторых членов System.MulticastDelegate.

[Serializable]

public abstract class MulticastDelegate: Delegate {

 // Методы

public sealed override Delegate[] GetInvocationList();

 public static bool operator==(MulticastDelegate d1, MulticastDelegate d2);

 public static bool operator!=(MulticastDelegate d1, MulticastDelegate d2);

 // Поля

 private IntPtr _invocationCount;

 private object _invocationList;

}

Дополнительные функциональные возможности System.MulticastDelegate получает от своего родительского класса System.Delegate. Вот часть определения этого класса.

[Serializable, ClassInterface(ClassInterfaceType.AutoDual)]

public abstract class Delegate: ICloneable, ISerializable {

 // Методы

 public static Delegate Combine(params Delegate[] delegates);

 public static Delegate Combine(Delegate a, Delegate b);

 public static Delegate Remove(Delegate source, Delegate value);

 public static Delegate RemoveAll(Delegate source, Delegate value);

 // Перегруженные операции

 public static bool operator==(Delegate d1, Delegate d2);

 public static bool operator!=(Delegate d1, Delegate d2);

 // Свойства

 public MethodInfo Method {get;}

 public object Target {get;}

}

Здесь следует подчеркнуть, что от вас никогда не потребуется непосредственно получать производные этих базовых классов, и вы можете ограничить себя использованием только членов, указанных в табл. 8.1.

Таблица 8.1. Избранные члены System.MulticastDelegate и System.Delegate

Наследуемый член Описание
Method Свойство, возвращающее тип System.Reflection.Methodlnfo, который представляет информацию о статическом методе, поддерживаемом делегатом
Target Если доступный для вызова метод определен на уровне объекта (а не как статический метод), то Target возвратит имя метода, поддерживаемого делегатом. Если возвращенным значением Target оказывается null, то доступный для вызова метод является статическим
Combine() Статический метод, добавляющий метод в список методов, поддерживаемых делегатом. В C# этот метод вызывается с помощью перегруженной операции +=
GetInvocationList() Метод, возвращающий массив типов System.Delegate, каждый из которых представляет конкретный доступный для вызова метод
Remove() RemoveAll() Статические методы, удаляющие метод (или все методы) из списка вызовов. В C# метод Remove() можно вызвать опосредованно, используя перегруженную операцию –=
Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

WindowsFile System

Из книги Справочник по реестру Windows XP автора Коллектив РуБоард

WindowsFile System HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystemNtfsDisableLastAccessUpdateОбновления меток последнего доступа ко всем файлам каталога при его открытии на диске NTFS.Тип: REGDWORD;Значение: (0 = устанавливать метку; 1 = не устанавливать метку)HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionEFSEfsConfigurationСистема


WindowsFile System

Из книги Руководство по стандартной библиотеке шаблонов (STL) автора Ли Менг

WindowsFile System HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystemNtfsDisableLastAccessUpdateОбновления меток последнего доступа ко всем файлам каталога при его открытии на диске NTFS.Тип: REGDWORD;Значение: (0 = устанавливать метку; 1 = не устанавливать метку)HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionEFSEfsConfigurationСистема


Базовые классы (Base)

Из книги Программы и файлы Windows автора Климов А

Базовые классы (Base) Следующие классы предоставляются, чтобы упростить определение типов (typedefs) параметров и результата:template ‹class Arg, class Result›struct unary_function { typedef Arg argument_type; typedef Result result_type;};template ‹class Arg1, class Arg2, class Result›struct binary_function { typedef Arg1 first_argument_type; typedef Arg2 second_argument_type; typedef


system

Из книги 200 лучших программ для Интернета. Популярный самоучитель автора Краинский И

system Местонахождение: WINDOWSsystem32config Файл system (обратите внимание, что файл без расширения) содержит раздел реестра


System Сор

Из книги Справочное руководство по C++ автора Страустрап Бьярн

System Сор Производитель: Mahaon soft (http://mahaonsoft.com).Статус: коммерческая.Страница для скачивания: http://mahaonsoft.com/downloads.html.Размер: 800 Кбайт.На первый взгляд, эта программа напоминает MagicTweak (см. выше) (рис. 5.35). Действительно, некоторое сходство в интерфейсе есть. В левой части окна


System Mechanic

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

System Mechanic Производитель: iolo technologies (http://www.iolo.com).Статус: коммерческая.Страница для скачивания: http://www.iolo.com/download.cfm.Размер: 7,8 Мбайт.После запуска System Mechanic вы увидите окно, которое можно условно разделить на три части (рис. 5.36). В левой находятся пункты меню, каждое из которых


R.10.1 Множественные базовые классы

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

R.10.1 Множественные базовые классы Класс может быть производным по отношению к любому числу базовых классов. Приведем пример:class A {/*… */};class B {/*… */};class C {/*… */};class D: public A, public B, public C {/*… */};Использование более, чем одного прямого базового класса называется множественным


System.DateTime и System.TimeSpan

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

System.DateTime и System.TimeSpan В завершение нашего обзора базовых типов данных позволите обратить ваше внимание на то, что пространство имен System определяет несколько полезных типов данных, для которых в C# не предусмотрено ключевых слов. Это, в частности, типы DateTime и TimeSpan (задачу


Множественные базовые классы

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Множественные базовые классы Говоря о базовых классах, важно не забывать, что в C# каждый класс должен иметь в точности один непосредственный базовый класс. Таким образом, нельзя иметь тип с двумя или большим числом базовых классов (это называется множественным


Тип System.GC

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

Тип System.GC Библиотеки базовых классов предлагают тип класса System.GC, который позволяет программно взаимодействовать со сборщиком мусора, используя множество статических членов указанного класса. Следует заметить, что непосредственно использовать этот тип в программном


Классы из пространства имен System.Collections

Из книги UNIX — универсальная среда программирования автора Пайк Роб

Классы из пространства имен System.Collections Еще раз подчеркнем, что интерфейсы остаются бесполезными до тех пор, пока они не реализованы соответствующим классом или соответствующей структурой. В табл. 7.3 предлагаются описания основных классов из пространства имен System.Collections


7.3.1.1. System V IPC

Из книги автора

7.3.1.1. System V IPC Средства System V IPC — средства передачи сообщений, основанные на имеющихся в System V возможностях общей памяти, которые были описаны ранее.Программы, взаимодействующие с помощью System V IPC, обычно определяют общие протоколы, основанные на обмене короткими (до 8 Кб)


7.3.1.1. System V IPC

Из книги автора

7.3.1.1. System V IPC Средства System V IPC — средства передачи сообщений, основанные на имеющихся в System V возможностях общей памяти, которые были описаны ранее.Программы, взаимодействующие с помощью System V IPC, обычно определяют общие протоколы, основанные на обмене короткими (до 8 Кб)


ГЛАВА 3 System V IPC

Из книги автора

ГЛАВА 3 System V IPC 3.1. Введение Из имеющихся типов IPC следующие три могут быть отнесены к System V IPC, то есть к методам взаимодействия процессов, соответствующим стандарту System V:? очереди сообщений System V (глава 6);? семафоры System V (глава 11);? общая память System V (глава 14).Термин «System V IPC»


System V API

Из книги автора

System V API Этот набор API является базовым для второй ветви[6] UNIX — System V (AT&T Unix System V). Как и оба предыдущих, этот набор API самодостаточен для реализации практически всех возможностей ОС, но использует для этого совершенно другие модели, например сетевую абстракцию TLI вместо