Automapper и IoC - PullRequest
       22

Automapper и IoC

2 голосов
/ 11 марта 2011

Прочитав сообщение в блоге Джимми Богарда о AutoMapper и IoC , я попытался реализовать нечто подобное, используя Ninject в качестве IoC.Итак, насколько я понимаю, IoC предоставит Singleton Instance для IConfiguration , который вы используете для определения сопоставления объектов.

Dim config as IConfiguration = Kernel.Get(Of IConfiguration)
Config.CreateMap(Of Source, Destination)

Итак, позже я написалпроверьте, что статический класс Mapper делает по-другому.В следующем тесте я сравниваю 2 разных экземпляра IConfiguration и IMappingEngine и тест пройден.

Поэтому я пытаюсь выяснить, какова цель использования IoCс AutoMapper, когда статический класс Mapper делает то же самое, то есть каждый раз предоставляет одноэлементный экземпляр IConfiguration.

    <TestMethod()>
    Public Sub Test()
       Dim c1 As IConfiguration = Mapper.Configuration
       Dim c2 As IConfiguration = Mapper.Configuration

       Dim e1 As IMappingEngine = Mapper.Engine
       Dim e2 As IMappingEngine = Mapper.Engine

       Assert.AreSame(c1, c2)
       Assert.AreSame(e1, e2)
   End Sub

1 Ответ

0 голосов
/ 11 марта 2011

Если у вас есть компонент, содержащий ваши сопоставления, который настроен как одноэлементный, вы можете убедиться, что компонент, настроенный как переходный, получит свои зависимости (сопоставления), выполнив инъекцию компонента сопоставления.

Вы не должны были бы инициализировать сопоставления в другом месте любым другим способом.

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

Я сам не делал этого так (мои компоненты в основном одиночные), но это звучит довольно неплохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...