类级别的可本地化的DisplayName属性

时间:2019-02-26 07:38:41

标签: c# localization attributes

我正在寻找一种在可本地化的类级别设置displayname属性的方法。我设法使用display属性将其修复为方法/属性级别:

       [Display(
            ResourceType = typeof(HardwareLocalization),
            Name = nameof(HardwareLocalization.DoorAccessConfiguration_RequireActiveMembership_Name),
            Description = nameof(HardwareLocalization.DoorAccessConfiguration_RequireActiveMembership_Description)
        )]
        public bool RequireActiveMembership { get; set; }

但是[Display(Name = 'x')]在类级别上不适用,只有[DisplayName('name')]是适用的,但是不可本地化。

我一直在搜索,但是我发现的所有帖子仅在方法/属性级别解决该问题。

1 个答案:

答案 0 :(得分:0)

一种可能的方法是派生具有不同参数的新属性类。

使用以下定义,您可以提供资源名称作为参数。

internal class ma_DisplayNameAttribute : System.ComponentModel.DisplayNameAttribute
{
  public ma_DisplayNameAttribute( string ResourceName )
    : base ( AttributeTest.Properties.Resources.ResourceManager.GetString(ResourceName) )
  {
  }
}

属性测试是我组件的名称。您必须将其替换为组件中的基本名称空间。

您可以像使用原始DisplayName属性一样使用它

[ma_DisplayName("Banana")]
class Class2
{
  ..
}

除了参数现在是资源字符串的名称。