【发布时间】:2012-08-24 09:24:12
【问题描述】:
在我的应用程序中,多个模型需要Password 属性(例如,Registration 和ChangePassword 模型)。 Password 属性具有 DataType 和 Required 之类的属性。因此,为了确保可重用性和一致性,我创建了:
interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}
和
class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}
很遗憾,属性不起作用。
然后我尝试将接口更改为类:
public class PasswordContainer {
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
}
和
public class RegistrationModel : PasswordContainer {
public override string Password { get; set; }
}
现在它正在工作。为什么会这样?
为什么属性从类继承时有效,而从接口继承时无效?
【问题讨论】:
-
@KyorCode:我在搜索时找不到您在第一条评论中发布的问题。甚至不在相关问题列表中。我已将此问题标记为与您推荐的问题完全相同。
标签: c# interface annotations attributes