У сборок имеется много других особенностей, и с ними связано немало актуальных вопросов программирования, но, к сожалению, их обсуждение выходит за рамки этой книги. Ведь сборки являются неотъемлемой частью процесса разработки программного обеспечения в среде .NET, но формально они не относятся к средствам языка С#. Тем не менее в C# имеется одно средство, непосредственно связанное со сборкой. Это модификатор доступа internal, рассматриваемый в следующем разделе.
Модификатор доступа internal
Помимо модификаторов доступа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