在许多 .resx 文件中,我遇到了这样的事情:
<data name=">>OurLabel.Name" xml:space="preserve">
<value>OurLabel</value>
</data>
我的问题是:为什么属性
name
在许多情况下 - 但并非总是如此 - 从 >>
开始?
最佳答案
您在 Winforms 窗体的 .resx 文件中找到了它,并将其 Localizable 属性设置为 True。 >
是 >
的 xml 编码字符,因此要保存的属性值名称是“>>OurLabel.Name”。
您将看到的其他属性是 Type、Parent、ZOrder。
它们的特别之处在于它们是设计时属性。设计者为控件添加的额外内容。设计者添加这些属性的问题是它们会导致歧义。我能想到的最好的例子就是故意造成这样的歧义:
using System;
using System.ComponentModel;
using System.Windows.Forms;
class MyLabel : Label {
[Localizable(true)]
public string Type { get; set; }
}
将这个放在窗体上,现在控件有两个 Type 属性。您将在 .resx 文件中看到它们,如下所示:
<data name="myLabel1.Type" xml:space="preserve">
<value>Example</value>
</data>
<data name=">>myLabel1.Type" xml:space="preserve">
<value>MyLabel, WindowsFormsApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
请注意“myLabel1.Type”和“>>myLabel1.Type”之间的区别。问题解决了。
您还会看到“$this”。使用的前缀。它消除了表单属性名称和表单控件名称之间的歧义。
关于.NET .resx 文件 : why does name attribute often start with >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382276/