Al usar Anotaciones de datos con MVC, Pro y Contras de usar una interfaz frente a un MetadataType
Si tu leeseste artículo sobre Validación con los Validadores de anotación de datos, muestra que puede usar el atributo MetadataType para agregar atributos de validación a propiedades en clases parciales. Lo usa cuando trabaja con ORM como LINQ to SQL, Entity Framework o Subsonic. Luego puede usar la validación "automática" del lado del cliente y del servidor. Se juega muy bien con MVC.
Sin embargo, un colega mío utilizó una interfaz para lograr exactamente el mismo resultado. se ve casi exactamente igual y funcionalmente logra lo mismo. Entonces, en lugar de hacer esto:
[MetadataType(typeof(MovieMetaData))]
public partial class Movie
{
}
public class MovieMetaData
{
[Required]
public object Title { get; set; }
[Required]
[StringLength(5)]
public object Director { get; set; }
[DisplayName("Date Released")]
[Required]
public object DateReleased { get; set; }
}
Él hizo esto:
public partial class Movie :IMovie
{
}
public interface IMovie
{
[Required]
object Title { get; set; }
[Required]
[StringLength(5)]
object Director { get; set; }
[DisplayName("Date Released")]
[Required]
object DateReleased { get; set; }
}
Entonces mi pregunta es, ¿cuándo importa realmente esta diferencia?
Pienso que las interfaces tienden a ser más "reutilizables", y que hacer una para una sola clase no tiene mucho sentido. También podría argumentar que podría diseñar sus clases e interfaces de una manera que le permita usar interfaces en varios objetos, pero siento que eso está tratando de adaptar sus modelos a otra cosa, cuando realmente deberían ser independientes. ¿Qué piensas?