x:ClassModifier 指令

同时提供 x:Class 时修改 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 的目标;因此,要传递的值未指定。

还可以在 C# 中指定 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 来阻止所有可能的实例化尝试。

另请参阅