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?

Respuestas a la pregunta(3)

Su respuesta a la pregunta