创建推断ResourceType的自定义DisplayAttribute

时间:2016-09-03 10:59:14

标签: c# asp.net-mvc-4 attributes c#-6.0

使用C#6,使用nameof()关键字,现在可以创建一个使用本地化的类型安全Display属性。 (另见DisplayName attribute from Resources?

结果将是这样的:

    [Display(NameRes = Localization.Account.MinPasswordLength), ResourceType = typeof(Localization.Account))]
    public int MinPasswordLength { get; set; }

但是,在输入了几十个属性之后,我觉得必须有一个更简单的方法。每次我输入相同的信息两次(差不多)。

我的问题是: 如何创建自定义DisplayName属性以从名称信息中推断出ResourceType?

然后代码看起来像这样:

    [Display(NameResource = Localization.Account.MinPasswordLength)]
    public int MinPasswordLength { get; set; }

知道这是否可行?如果是这样的话:怎么样?

1 个答案:

答案 0 :(得分:0)

一种方法是定义另一个定义的属性采用资源类型。

您将此属性放入类定义中。 在资源搜索期间,您将检查类型主机以确定资源类型。

示例:

[DisplayResourceHost(typeof(Localization.Account))]
public class ViewModel
{
    [Display(NameResource = Localization.Account.MinPasswordLength)]
    public int MinPasswordLength { get; set; }
}