x:ClassModifier 指令

修改 XAML 编译行为,同时提供 x:Class。 具体而言,不是创建具有 Public 访问级别(默认)的部分 class,而是创建具有 NotPublic 访问级别的提供的 x:Class。 此行为会影响生成的程序集中类的访问级别。

XAML 属性用法

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

XAML 值

说明
NotPublic 传递以指定 TypeAttributes.PublicTypeAttributes.NotPublic 的确切字符串会有所不同,具体取决于使用的代码隐藏编程语言。 请参阅“备注”。

依赖项

x:Class 还必须在同一元素上提供,并且该元素必须是页面中的根元素。 有关详细信息,请参阅 [MS-XAML] 第 6.3.1.8 节

备注

.NET XAML 服务使用情况中 x:ClassModifier 的值因编程语言而异。 要使用的字符串取决于每种语言如何实现其 CodeDomProvider、其返回的用于定义 TypeAttributes.PublicTypeAttributes.NotPublic 含义的类型转换器以及该语言是否区分大小写。

  • 对于 C#,被传递以指定 TypeAttributes.NotPublic 的字符串是 internal

  • 对于 Microsoft Visual Basic .NET,被传递以指定 TypeAttributes.NotPublic 的字符串是 Friend

  • 对于 C++/CLI,不存在支持编译 XAML 的目标;因此,要传递的值未指定。

还可以指定 TypeAttributes.Public(C# 中的 public,Visual Basic 中的 Public);但是,很少指定 TypeAttributes.Public,因为 TypeAttributes.Public 已经是默认行为。

具有等效用户代码访问级别限制的其他值(例如 C# 中的 private)与 x:ClassModifier 无关,因为 XAML 中不支持嵌套类引用,因此,TypeAttributes.NotPublic 修饰符具有相同的效果。

安全说明

x:ClassModifier 中声明的访问级别仍受特定框架及其功能的解释。 如果通过包 URI 引用从 WPF 资源引用该类,则 WPF 包括加载和实例化 x:ClassModifierinternal 的类型的功能。 由于这种情况以及可能由其他框架实现的其他类似情况,请勿完全依赖 x:ClassModifier 来阻止所有可能的实例化尝试。

另请参阅