Ao usar anotações de dados com MVC, prós e contras do uso de uma interface versus um MetadataType

Se você lereste artigo sobre Validação com os validadores de anotação de dados, mostra que você pode usar o atributo MetadataType para adicionar atributos de validação a propriedades em classes parciais. Você usa isso ao trabalhar com ORMs como LINQ to SQL, Entity Framework ou Subsônico. Em seguida, você pode usar a validação "automagic" do cliente e do servidor. Joga muito bem com o MVC.

No entanto, um colega meu usou uma interface para obter exatamente o mesmo resultado. parece quase exatamente o mesmo e, funcionalmente, realiza a mesma coisa. Então, em vez de fazer isso:

[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; }
}

Ele fez o seguinte:

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; }
}

Então, minha pergunta é: quando essa diferença realmente importa?

Penso que as interfaces tendem a ser mais "reutilizáveis" e que criar uma para uma única classe não faz muito sentido. Você também pode argumentar que pode projetar suas classes e interfaces de uma maneira que permita o uso de interfaces em vários objetos, mas eu sinto que isso está tentando encaixar seus modelos em outra coisa, quando eles realmente devem ficar sozinhos. O que você acha?

questionAnswers(3)

yourAnswerToTheQuestion