you would what purpose net for attribute and c# interface annotations attributes

would - using attributes in c#



Atributo en los miembros de la interfaz no funciona (1)

Los atributos en las propiedades de la interfaz no se heredan de la clase, puede hacer que su interfaz sea una Clase abstracta.

Encontré una respuesta de Microsoft :

El equipo del producto no desea implementar esta característica, por dos razones principales:

  • Consistencia con DataAnnotations.Validator
  • Consistencia con el comportamiento de validación en ASP.Net MVC
  • Escenario complicado: una clase implementa dos interfaces que tienen la misma propiedad, pero con atributos en conflicto en ellas. ¿Qué atributo tendría prioridad?

En mi aplicación, varios modelos necesitan propiedades de Password (por ejemplo, modelos de Registration y cambio de ChangePassword ). La propiedad Password tiene atributos como DataType y Required . Por lo tanto, para garantizar la reutilización y consistencia, creé:

interface IPasswordContainer{ [Required(ErrorMessage = "Please specify your password")] [DataType(DataType.Password)] string Password { get; set; } }

Y

class RegistrationModel : IPasswordContainer { public string Password { get; set; } }

Desafortunadamente, los atributos no funcionan.

Entonces intenté 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 está funcionando. ¿Por qué es así?

¿Por qué los atributos funcionan cuando se heredan de la clase pero no funcionan cuando se heredan de la interfaz?