Почему для проверки используются классы-партнеры?

Мне любопытно, почему проверка данных выполняется с использованием дополнительных классов. Рассмотрим следующий пример, где MyEntity - это сущность Linq-to-SQL или Linq-to-Entities, а приведенный ниже класс является частичным классом, расширяющим эту сущность.

[MetadataType(typeof(MyEntity.MyEntityMetadata))]
public partial class MyEntity
{
    private class MyEntityMetadata
    {
        [Required(ErrorMessage = "The title is required.")]
        public string Title { get; set; }
    }
}

Почему такая конструкция? Почему при разработке DataAnnotations был выбран этот «шаблон приятеля»? Почему бы не разместить атрибуты непосредственно в сущности?

5
задан kbrimington 24 February 2011 в 20:00
поделиться