Классы AutoMapper с переходным образом жизни в IoC
Я использую AutoMapper для сопоставления сущностей домена для просмотра моделей в приложении Asp.Net MVC. Я регистрирую эти классы отображения в Castle Windsor, чтобы они были доступны для контроллера через внедрение зависимостей. Эти классы отображения имеют виртуальный метод CreateMap, в котором я могу переопределить отображение AutoMapper, сообщая ему, как сопоставлять поля из сущности с моделью представления, какие поля игнорировать, указывая на методы, которые преобразуют данные и т. Д. Все это работает хорошо; Слава людям, стоящим за AutoMapper!
До сих пор я регистрировал классы отображения с образом жизни Singleton в Виндзоре, но одному из них необходимо использовать IAuthorizationRepository из Rhino.Security, для которого его компоненты должны быть зарегистрированы как Transient. Это вынуждает меня регистрировать классы отображения также как переходные, потому что одноэлементный класс отображения, содержащий ссылку на переходный IAuthorizationRepository, вызывает проблемы при втором использовании преобразователя (т. Е. ISession уже закрыл ошибки).
Является ли это пустой тратой ресурсов на регистрацию всех этих классов отображения с временным образом жизни, что приведет к созданию экземпляра класса отображения и к запуску метода CreateMap каждый раз, когда система хочет отобразить объект домена в модель представления?
Или я должен попытаться найти способ отделить IAuthorizationRepository от класса отображения, чтобы я мог сохранить классы отображения как синглтоны?
Спасибо Дэн
1 ответ
Другим способом решения этой проблемы является использование TypedFactoryFacility, а затем вместо внедрения IAuthorizationRepository в ваши синглтоны вы можете внедрить Func<IAuthorizationRepository>