En mi aplicación, varios modelos necesitan Password
propiedades (por ejemplo, Registration
y ChangePassword
modelos). La propiedad Password
tiene un atributo como DataType
y Required
. Por lo tanto, para asegurar la reutilización de una consistencia, creé:El atributo en los miembros de la interfaz no funciona
interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}
Y
class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}
Por desgracia, los atributos no funciona.
Luego he intentado cambiar la interfaz a una clase:
public class PasswordContainer {
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
}
Y
public class RegistrationModel : PasswordContainer {
public override string Password { get; set; }
}
Ahora se está trabajando. ¿Por qué es así?
¿Por qué los atributos funcionan cuando se heredan de la clase pero no funcionan cuando se heredan de la interfaz?
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 también útil – KyorCode
@KyorCode: No pude encontrar la pregunta que publicó en el primer comentario durante la búsqueda. Incluso no en la lista de preguntas relacionadas. He marcado esta pregunta como el duplicado exacto de la pregunta que arbitró. – Mohayemin