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