gpt4 book ai didi

c# - 接口(interface)成员的属性不起作用

转载 作者:IT王子 更新时间:2023-10-29 04:48:55 24 4
gpt4 key购买 nike

在我的应用程序中,有几个模型需要Password 属性(例如,RegistrationChangePassword 模型)。 Password 属性具有 DataTypeRequired 等属性。因此,为了确保可重用性和一致性,我创建了:

interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}

class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}

不幸的是,这些属性不起作用。

然后我尝试将接口(interface)更改为一个类:

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; }
}

现在它正在运行。为什么会这样?

为什么从类继承的属性有效,从接口(interface)​​继承的属性无效?

最佳答案

接口(interface)属性的属性不会继承到类中,您可以将接口(interface)设为抽象类。

找到一个 answer from Microsoft :

The product team does not want to implement this feature, for two main reasons:

  • Consistency with DataAnnotations.Validator
  • Consistency with validation behavior in ASP.Net MVC
  • tricky scenario: a class implements two interfaces that have the same property, but with conflicting attributes on them. Which attribute would take precedence?

关于c# - 接口(interface)成员的属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12106566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com