繁体   English   中英

x:FieldModifier =“ Private”是做什么的,我应该为此担心吗?

[英]What does x:FieldModifier=“Private” do and should I worry about it?

我目前正在检查WPF项目中是否有Resharper消息,它告诉我每个输入控件都可以设为私有。 当我这样做时,它将x:FieldModifier="Private"到控制节点。

我对XAML经验不足。 什么是x:FieldModifier 如果将其设置为“ Private怎样? 这重要吗? 它会破坏东西吗?

转换XAML后,您的控件将成为具有使用Namex:Name属性指定的Name的类中的字段。 但是,这些字段具有默认的internal访问修饰符。 x:FieldModifier的目的是允许您控制使用访问修饰符。 因此x:FieldModifier="Private"实际上使字段私有。

当启用XAML的编译器(例如C#,VB.NET)使用XAML文件处理应用程序时,XAML文件的大部分内容都转换为以主机语言编写的临时代码(例如C#,VB.NET)。 也就是说,XAML文件被转换为普通的CLI类。

docs中所述, x:FieldModifier指令影响从XAML定义生成的类或这些类的成员的可见性。

通常, 信息隐藏封装的原理表明,只有绝对需要的东西才对外部世界可见(例如,在给定类之外),而其他任何东西都应该保持隐藏(以便以后可以交换)。时间点而不会破坏组件的公共接口)。 这就是ReSharper试图在此处强制执行的操作,因为通常只能从给定的用户控件或窗口中访问输入控件。 因此,此更改对于使自身具有高度可维护性的简洁代码很重要。

一种可以“破坏内容”的微妙方式是,XAML文件通常独立于它们所使用的基础编程语言。 通常,您可以将应用程序的C#代码转换为另一种与CLI兼容的语言,而只是继续使用XAML文件(如果相应的编译器也支持XAML,则)。 通过使用x:FieldModifier指令,您可以打破这种独立性,因为该指令的值取决于语言:

您传递的用于指定TypeAttributes.Public与TypeAttributes.NotPublic的确切字符串会有所不同,具体取决于所使用的代码隐藏编程语言。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM