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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage