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


Директива 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] 6.3.1.8.

Замечания

Значение x:ClassModifier в использовании служб XAML .NET зависит от языка программирования. Строка, используемая для использования, зависит от того, как каждый язык реализует свою 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:ClassModifierinternal, если этот класс ссылается из ресурса WPF через ссылку на URI пакета. В результате этого дела и потенциально другие, как она реализована другими платформами, не полагаются исключительно на x:ClassModifier блокировать все возможные попытки создания экземпляров.

См. также