我最近学习了如何使用以下文章为我的模型属性创建本地化显示名称:DataAnnotations 的简化本地化
我现在正试图通过从构造函数中删除参数来进一步推动它。意思而不是拥有这个
public class User
{
[Required]
[LocalizedDisplayNameAttribute("User_Id")]
public int Id { get; set; }
[Required]
[StringLength(40)]
[LocalizedDisplayNameAttribute("User_FirstName")]
public string FirstName { get; set; }
[Required]
[StringLength(40)]
[LocalizedDisplayNameAttribute("User_LastName")]
public string LastName { get; set; }
}
我想要这个
public class User
{
[Required]
[LocalizedDisplayNameAttribute]
public int Id { get; set; }
[Required]
[StringLength(40)]
[LocalizedDisplayNameAttribute]
public string FirstName { get; set; }
[Required]
[StringLength(40)]
[LocalizedDisplayNameAttribute]
public string LastName { get; set; }
}
现在的问题是我如何让这个类:
public class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
private PropertyInfo _nameProperty;
private Type _resourceType;
public LocalizedDisplayNameAttribute(string className, string propertyName)
: base(className + (propertyName == null ? "_Class" : ("_" + propertyName)))
{
}
public override string DisplayName
{
get
{
return LanguageService.Instance.Translate(base.DisplayName) ?? "**" + base.DisplayName + "**";
}
}
}
无需在构造函数中指定即可知道我的属性的名称。