x:ClassModifier 指令
修改 XAML 编译行为,同时提供 x:Class
。 具体而言,不是创建具有 Public
访问级别(默认)的部分 class
,而是创建具有 NotPublic
访问级别的提供的 x:Class
。 此行为会影响生成的程序集中类的访问级别。
XAML 属性用法
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
XAML 值
值 | 说明 |
---|---|
NotPublic | 传递以指定 TypeAttributes.Public 与 TypeAttributes.NotPublic 的确切字符串会有所不同,具体取决于使用的代码隐藏编程语言。 请参阅“备注”。 |
依赖项
x:Class 还必须在同一元素上提供,并且该元素必须是页面中的根元素。 有关详细信息,请参阅 [MS-XAML] 第 6.3.1.8 节。
备注
.NET XAML 服务使用情况中 x:ClassModifier
的值因编程语言而异。 要使用的字符串取决于每种语言如何实现其 CodeDomProvider、其返回的用于定义 TypeAttributes.Public 和 TypeAttributes.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:ClassModifier
为 internal
的类型的功能。 由于这种情况以及可能由其他框架实现的其他类似情况,请勿完全依赖 x:ClassModifier
来阻止所有可能的实例化尝试。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈