Помимо модификаторов доступаpublic, privateиprotected,использовавшихся в представленных ранее примерах программ, в C# предусмотрен также модификатор доступаinternal.Этот модификатор определяет доступность члена во всех файлах сборки и его недоступность за пределами сборки. Проще говоря, о члене, обозначенном какinternal,известно только в самой программе, но не за ее пределами. Модификатор доступаinternalособенно полезен для создания программных компонентов.

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

Из модификаторовprotectedиinternalможно составить спаренный модификатор доступаprotected internal.Уровень доступаprotected internalможет быть задан только для членов класса. Член, объявленный какprotected internal,доступен лишь в пределах собственной сборки или для производных типов.

Ниже приведен пример применения модификатора доступаinternal.

// Использовать модификатор доступа internal.

using System;

class InternalTest { internal int x;

}

class InternalDemo { static void Main() {

InternalTest ob = new InternalTest();

ob.x = 10; // доступно, потому что находится в том же файле Console.WriteLine("Значение ob.x: " + ob.x);

}

}

В классеInternalTestполе х объявляется какinternal.Это означает, что поле х доступно в самой программе, но, как показывает код классаInternalDemo,оно недоступно за пределами программы.

ГЛАВА 17 Динамическая идентификация типов, рефлексия и атрибуты

I

В этой главе рассматриваются три эффективных средства: динамическая идентификация типов, рефлексия и атрибуты.Динамическая идентификация типовпредставляет собой механизм, позволяющий определить тип данных во время выполнения программы. Рефлексия — это средство для получения сведений о типе данных. Используя эти сведения, можно конструировать и применять объекты во время выполнения. Это довольно эффективное средство, поскольку оно дает возможность расширять функции программы динамически, т.е. в процессе ее выполнения.Атрибутописывает характеристики определенного элемента программы на С#. Атрибуты можно, в частности, указать для классов, методов и полей. Во время выполнения программы разрешается опрашивать атрибуты для получения сведений о них. Для этой цели в атрибутах используется динамическая идентификация типов и рефлексия.

Динамическая идентификация типов

Перейти на страницу:

Похожие книги