Поделиться через


Директива x:ClassModifier

Изменяет поведение компиляции XAML, когда также предоставляется x:Class. В частности, вместо создания частичного класса class с уровнем доступа Public (по умолчанию), предоставленный x:Class создается со уровнем доступа NotPublic. Это поведение влияет на уровень доступа для класса в генерированных сборках.

Использование атрибута XAML

<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
   ...
</object>

Значения XAML

NotPublic

Точная строка, передаваемая для указания TypeAttributes.Public или TypeAttributes.NotPublic, зависит от используемого языка программирования с выделенным кодом. См. примечания.

Зависимости

x:Class также должен быть указан в том же элементе, а этот элемент должен быть корневым элементом страницы. Дополнительные сведения см. в разделе [MS-XAML] Раздел 4.3.1.8.

Заметки

Значение x:ClassModifier в службах XAML на платформе .NET Framework различается в зависимости от языка программирования. Используемая строка зависит от того, как каждый язык реализует свой CodeDomProvider, от преобразователей типов, возвращаемых для определения значений TypeAttributes.Public и TypeAttributes.NotPublic, а также от того, учитывает язык регистр или нет.

  • В C# передаваемой строкой для назначения TypeAttributes.NotPublic является internal.

  • В Microsoft Visual Basic .NET передаваемой строкой для назначения TypeAttributes.NotPublic является Friend.

  • Для C++/CLI не существует целей, поддерживающих компиляцию XAML, поэтому передаваемое значение не указано.

Можно также указать TypeAttributes.Public (public в C#, Public в Visual Basic), но указание TypeAttributes.Public используется редко, так как TypeAttributes.Public уже является поведением по умолчанию.

Другие значения с эквивалентными ограничениями на уровне доступа к пользовательскому коду, например private в C#, не относятся к x:ClassModifier, поскольку ссылки на вложенные классы не поддерживаются в XAML, и, таким образом, модификатор TypeAttributes.NotPublic оказывает тот же эффект.

Примечания относительно безопасности

Уровень доступа согласно объявлению в x:ClassModifier по-прежнему должен интерпретироваться по конкретным платформам и их возможностям. WPF включает возможности для загрузки и создания экземпляров типов, в которых x:ClassModifier равно internal, если на этот класс ссылается ресурс WPF с помощью ссылки URI типа "pack". Вследствие этого случая (и потенциально других подобных случаях, реализованных в других платформах), не следует полагаться исключительно на x:ClassModifier для блокирования всех возможных попыток создания экземпляров.

См. также

Ссылки

Директива x:Class

Директива x:FieldModifier

Основные понятия

Код программной части и XAML в WPF

Безопасность (WPF)

Другие ресурсы

Типы, перенесенные из WPF в System.Xaml