Директива 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:ClassModifier
internal
, если этот класс ссылается из ресурса WPF через ссылку на URI пакета. В результате этого дела и потенциально другие, как она реализована другими платформами, не полагаются исключительно на x:ClassModifier
блокировать все возможные попытки создания экземпляров.
См. также
- директива x:Class
- Code-Behind и XAML в WPF
- директива x:FieldModifier
- безопасности
(WPF) - Типы , перенесенные из WPF в System.Xaml
.NET Desktop feedback