.NET .resx 文件 : why does name attribute often start with >>

标签 .net winforms resx

在许多 .resx 文件中,我遇到了这样的事情:

<data name="&gt;&gt;OurLabel.Name" xml:space="preserve">
  <value>OurLabel</value>
</data>

我的问题是:为什么属性name在许多情况下 - 但并非总是如此 - 从 &gt;&gt; 开始?

最佳答案

您在 Winforms 窗体的 .resx 文件中找到了它,并将其 Localizable 属性设置为 True。 &gt;> 的 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="&gt;&gt;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 &gt;&gt;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382276/

相关文章:

.net - 部署面向 .NET Framework 4.6 的 Azure 云服务

c# - 使用 CaSTLe Windsor 注入(inject)日志依赖

c# - “Error HRESULT E_FAIL has been returned from a call to a COM component” 窗体 c#

c# - 模拟按钮点击

c# - resx 回退系统中的额外级别

c# - 在一个解决方案中引用多个项目的资源文件

c# - 是否有可能使 WinForms 选项卡控件能够像 IE 或 Firefox 一样进行选项卡重新排序?

c# - TreeNodeCollection引用问题

c# - 如何将绘制的矩形存储在数组中?

c# - 如何访问另一个程序集的 .resx?