2016-07-07 6 views
0

Шаблон спецификации может быть использован для создания объектов, как показано в примере ниже:Использования Automapper при использовании спецификации шаблона для составления объектов

IUser user = 
       UserSpecification 
        .ForPerson() 
        .WithName("myname") 
        .WithSurname("mysurname") 
        .WithPrimaryContact(ContactSpecification.ForEmailAddress("[email protected]")) 
        .AndNoMoreContacts() 
        .Build(); 

Это приводит к вручную сопоставить данные из DTO к объекту спецификации. Есть ли способ, мы можем использовать automapper для заполнения объекта при использовании шаблона спецификации? Поддерживает ли Automapper это каким-либо образом?

Благодаря

ответ

1

Я не думаю, что так, как правило, образец спецификации используется для поэлементной установки индивидуальных свойств. Реализация шаблона включает в себя для каждого метода, фактически устанавливающего свойство вручную.

AutoMapper всегда отображает объект, в приведенном выше примере я не вижу исходный объект, а только спецификацию. Если спецификация заполнила объект, тогда этот объект был сопоставлен с пунктом назначения, тогда он будет работать. Результат выше из «Build()» может быть сопоставлен с «IUser».

В противном случае это не имеет большого смысла. Код внутри шаблона спецификации настраивает объект и пытается сопоставить его с конфигурацией AutoMapper, я думаю, будет гораздо больше проблем/запутанности, чем это было бы полезно.