私のアプリケーションでは、いくつかのモデルPasswordにプロパティが必要です (例: RegistrationandChangePasswordモデル)。プロパティには やの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; }
}
今、それは働いています。なぜそうなのですか?
クラスから継承すると属性が機能するのに、インターフェイスから継承すると機能しないのはなぜですか?