Я использую следующий метод, как описано в следующем ответе, чтобы создать экземпляр преобразователя:Использование AutoMapper.Profile для создания экземпляра (не статический) преобразователь
, как описано на следующий вопрос:
AutoMapper How To Map Object A To Object B Differently Depending On Context.
Как я могу использовать [повторное использование] класс Automapper profile для создания экземпляра устройства отображения?
public class ApiTestClassToTestClassMappingProfile : Profile
{
protected override void Configure()
{
base.Configure();
Mapper.CreateMap<ApiTestClass, TestClass>()
.IgnoreAllNonExisting();
}
}
Просто чтобы дать вам представление о том, почему я требую такой функциональности: я зарегистрировать все Automapper профильных классов в мой IoC контейнер [CastleWindsor], используя следующий метод:
IoC.WindsorContainer.Register(Types.FromThisAssembly()
.BasedOn<Profile>()
.WithServiceBase()
.Configure(c => c.LifeStyle.Is(LifestyleType.Singleton)));
var profiles = IoC.WindsorContainer.ResolveAll<Profile>();
foreach (var profile in profiles)
{
Mapper.AddProfile(profile);
}
IoC.WindsorContainer.Register(Component.For<IMappingEngine>().Instance(Mapper.Engine));
Хотя выше полностью выполняет необходимость инициализации моего статического класса Mapper, я действительно не знаю, как повторно использовать классы профилей Automapper для создания экземпляров mappers [используя нестатический mapper].
Не могли бы вы прокомментировать мой существующего решения и потенциальной возможности для улучшения и снижения производительности. – MHOOS
Я понятия не имею. Я просто знаю, что ваши оригинальные профили не позволят им быть изолированными для экземпляра ядра сопоставления. Это то, что я отвечал. –
Вместо этого я вызывал Mapper.CreateMap.CreateMap, поэтому он настраивался с использованием Singleton Mapper вместо созданного Autofac. Этот ответ помог мне. – Rn222