Moh*_*min 18 c# attributes annotations interface
在我的应用程序中,有几个模型需要Password属性(例如Registration和ChangePassword模型).该Password物业具有DataType和的属性Required.因此,为了确保可重用性的一致性,我创建了:
interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和
class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,属性不起作用.
然后我尝试将界面更改为类:
public class PasswordContainer {
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和
public class RegistrationModel : PasswordContainer {
public override string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在它正在运作.为什么会这样?
为什么属性在从类继承时工作但在从接口继承时不工作?
Hab*_*bib 25
接口属性上的属性不会继承到类,您可以将接口设置为抽象类.
产品团队不希望实现此功能,原因有两个:
- 与DataAnnotations.Validator的一致性
- 与ASP.Net MVC中的验证行为保持一致
- 棘手的场景:一个类实现两个具有相同属性的接口,但它们具有冲突的属性.哪个属性优先?
| 归档时间: |
|
| 查看次数: |
11202 次 |
| 最近记录: |