Attribut auf Interface-Mitgliedern funktioniert nicht
In meiner Bewerbung brauchen mehrere ModellePassword
Eigenschaften (zBRegistration
undChangePassword
Modelle). DasPassword
Eigenschaft hat Attribut wieDataType
undRequired
. Um die Wiederverwendbarkeit und Konsistenz zu gewährleisten, habe ich Folgendes erstellt:
interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}
Und
class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}
Leider funktionieren die Attribute nicht.
Dann habe ich versucht, die Schnittstelle in eine Klasse zu ändern:
public class PasswordContainer {
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
}
Und
public class RegistrationModel : PasswordContainer {
public override string Password { get; set; }
}
Jetzt funktioniert es. Warum ist es so?
Warum funktionieren die Attribute, wenn sie von der Klasse geerbt werden, aber nicht, wenn sie von der Schnittstelle geerbt werden?