Сервисы Automapper Construct Использование в Umbraco 8 - PullRequest
0 голосов
/ 28 мая 2020

Недавно я работал над небольшим побочным проектом с использованием Umbraco 8, и я поставил перед собой задачу заставить Auto-mapper работать с внедрением зависимостей. У меня работают базовые c мапперы, но заставить DI вводить мапперы с помощью ConstructServicesUsing было сложнее.

Чтобы заставить его работать, мне пришлось связать свои классы TypeConverter напрямую, когда я привязываю сопоставитель.

Я что-то упустил из виду? или есть способ выделить все ITypeConverter в сборке и связать их автоматически?

 public class MapperConfigurationComposer : IComposer
    {
        public void Compose(Composition composition)
        {
            var serviceContainer = composition.Concrete as LightInject.ServiceContainer;


            var mapperConfiguration = new AutoMapper.MapperConfiguration(cfg =>
            {               
                cfg.AddProfile(new MappingProfile());

                cfg.ConstructServicesUsing(type => serviceContainer.TryGetInstance(type));
            });

            var mapper  = mapperConfiguration.CreateMapper();

            composition.Register(mapper);

            composition.Register<SearchResultToSearchResultResponseItemTypeConverter>();

        }


    }   
  internal class MappingProfile: AutoMapper.Profile
    {
        public MappingProfile()
        {

            CreateMap<ISearchResult, SearchResultResponseItem>().ConvertUsing<SearchResultToSearchResultResponseItemTypeConverter>();
        }

    }
...