При использовании аннотаций данных с MVC, за и против использования интерфейса и типа метаданных

Если вы читаетеэта статья о валидации с помощью валидаторов аннотаций данных, это показывает, что вы можете использовать атрибут MetadataType для добавления атрибутов проверки к свойствам в частичных классах. Это используется при работе с ORM, такими как LINQ to SQL, Entity Framework или Subsonic. Затем вы можете использовать «автоматическую» проверку на стороне клиента и сервера. Очень хорошо играет с MVC.

Однако мой коллега использовал интерфейс для достижения точно такого же результата. это выглядит почти точно так же, и функционально выполняет то же самое. Поэтому вместо того, чтобы делать это:

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

Он сделал это:

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

Итак, мой вопрос, когда эта разница на самом деле имеет значение?

Я думаю, что интерфейсы имеют тенденцию быть более «повторно используемыми», и что создание интерфейса для одного класса не имеет особого смысла. Вы также можете утверждать, что могли бы спроектировать свои классы и интерфейсы таким образом, чтобы вы могли использовать интерфейсы для нескольких объектов, но я чувствую, что пытаюсь приспособить ваши модели к чему-то другому, когда они действительно должны стоять самостоятельно. Как вы думаете?

Ответы на вопрос(3)

Ваш ответ на вопрос