L'attribut de membres Interface ne fonctionne pas
Dans mon application, plusieurs modèles ont besoin de Password
propriétés (par exemple, Registration
et ChangePassword
modèles). Le Password
propriété dispose d'attribut comme DataType
et Required
. Par conséquent, pour s'assurer de la ré-utilisabilité de cohérence, j'ai créé :
interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}
Et
class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}
Malheureusement, les attributs ne fonctionne pas.
Puis j'ai essayé de changer l'interface d'une classe:
public class PasswordContainer {
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
}
Et
public class RegistrationModel : PasswordContainer {
public override string Password { get; set; }
}
Maintenant, il est de travail. Pourquoi c'est ainsi?
Pourquoi les attributs sont de travail lorsque héritées de la classe, mais ne fonctionne pas lorsque héritée de l'interface?
- stackoverflow.com/questions/540749/...
- bradwilson.typepad.com/blog/2011/08/... aussi utile
- Je ne pouvais pas trouver la question que vous avez posté dans le premier commentaire lors de la recherche. Même pas dans la liste des questions connexes. J'ai marqué cette question, dans la copie exacte de la question que vous avez à comité de lecture.
Vous devez vous connecter pour publier un commentaire.
Les attributs sur les propriétés de l'interface ne pas avoir hérité de la classe, vous pouvez faire de votre interface d'une Classe Abstraite.
Trouvé un réponse de Microsoft: