使用C#6,使用nameof()关键字,现在可以创建使用本地化的类型安全的Display属性。
(另请参见DisplayName attribute from Resources?)
结果将是这样的:
[Display(NameRes = Localization.Account.MinPasswordLength), ResourceType = typeof(Localization.Account))]
public int MinPasswordLength { get; set; }
但是,在为数十个属性键入此属性之后,我感到必须有一种更简单的方法。每次我输入相同的信息两次(几乎)。
我的问题是这样的:
如何创建一个自定义DisplayName属性,该属性从Name信息中推断ResourceType?
然后,代码将如下所示:
[Display(NameResource = Localization.Account.MinPasswordLength)]
public int MinPasswordLength { get; set; }
知道这是否可行吗?如果是这样:如何?
最佳答案
一种方法可能是定义另一个仅定义采用资源类型的属性。
您将此属性放入类定义中。
在资源搜索期间,您将检查类型宿主以确定资源类型。
范例:
[DisplayResourceHost(typeof(Localization.Account))]
public class ViewModel
{
[Display(NameResource = Localization.Account.MinPasswordLength)]
public int MinPasswordLength { get; set; }
}