【发布时间】:2017-01-11 09:08:42
【问题描述】:
使用 C#6,使用 nameof() 关键字,现在可以创建一个使用本地化的类型安全的 Display 属性。 (另见DisplayName attribute from Resources?)
结果会是这样的:
[Display(NameRes = Localization.Account.MinPasswordLength), ResourceType = typeof(Localization.Account))]
public int MinPasswordLength { get; set; }
但是,在输入了几十个属性之后,我觉得必须有一个更简单的方法。每次我都输入相同的信息两次(几乎)。
我的问题是: 如何创建从名称信息推断 ResourceType 的自定义 DisplayName 属性?
然后代码将如下所示:
[Display(NameResource = Localization.Account.MinPasswordLength)]
public int MinPasswordLength { get; set; }
知道这是否可能吗?如果是这样:如何?
【问题讨论】:
-
如果你检查
DisplayAttribute类的定义,你会注意到它是sealed,这意味着你不能从它继承。一种方法是创建您的自定义DisplayNameAttribute,它将从资源文件中读取信息。 -
是的,班级是密封的。这很不幸,但也许可以通过扩展来实现?
标签: c# asp.net-mvc-4 attributes c#-6.0