Классы AutoMapper с переходным образом жизни в IoC - PullRequest
2 голосов
/ 09 сентября 2010

Я использую AutoMapper для сопоставления сущностей домена для просмотра моделей в приложении Asp.Net MVC.Я регистрирую эти классы отображения в Castle Windsor, чтобы они были доступны для контроллера через внедрение зависимостей.Эти классы отображения имеют виртуальный метод CreateMap, в котором я могу переопределить отображение AutoMapper, сообщая ему, как сопоставлять поля из сущности с моделью представления, какие поля игнорировать, указывая на методы, которые преобразуют данные и т. Д. Все это работает хорошо;Большое спасибо людям, стоящим за AutoMapper!

До сих пор я регистрировал классы отображения с образом жизни Singleton в Виндзоре, но одному из них нужно использовать IAuthorizationRepository из Rhino.Security, который должен иметь свои компоненты.зарегистрирован как временный.Это вынуждает меня регистрировать классы отображения также как переходные, потому что одноэлементный класс отображения, содержащий ссылку на переходный IAuthorizationRepository, вызывает проблемы во второй раз, когда используется преобразователь (т. Е. ISession уже закрыл ошибки).

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

Или я должен попытаться найти способ отделить IAuthorizationRepository от класса отображения, чтобы я мог сохранить классы отображения как одиночные?

Спасибо, Дэн

1 Ответ

2 голосов
/ 05 октября 2010

Другим способом решения проблемы является использование TypedFactoryFacility, тогда вместо внедрения IAuthorizationRepository в ваши синглтоны вы можете добавить Func<IAuthorizationRepository>

...