Nella mia applicazione diversi modelli hanno bisogno delle proprietà Password
(ad esempio, Registration
e ChangePassword
). La proprietà Password
ha attributo come DataType
e Required
. Pertanto al fine di garantire di riutilizzabilità una consistenza, ho creato:L'attributo sui membri dell'interfaccia non funziona
interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}
E
class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}
Purtroppo, gli attributi non funziona.
Poi ho provato a cambiare l'interfaccia a una classe:
public class PasswordContainer {
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
}
E
public class RegistrationModel : PasswordContainer {
public override string Password { get; set; }
}
Ora si sta lavorando. Perché è così?
Perché gli attributi funzionano se ereditati dalla classe ma non funzionano se ereditati dall'interfaccia?
http://stackoverflow.com/questions/540749/can-ac-sharp-class-inherit-attributes-from-its-interface – KyorCode
http://bradwilson.typepad.com/blog/2011 /08/interface-attributes-class-attributes.html anche utile – KyorCode
@KyorCode: non ho trovato la domanda che hai postato nel primo commento durante la ricerca. Anche non nella lista delle domande correlate. Ho contrassegnato questa domanda come duplicato esatto della domanda che hai arbitrato. – Mohayemin