Невозможно зарегистрировать ITypeConverter в AutoFac - PullRequest
0 голосов
/ 01 июля 2019

Я создал WebApi в .Net Core 2.2. Мне нужно использовать AutoFac и Automapper. Я хочу написать действие Create, когда в Dto одно свойство конвертируется из int в объект.

Конвертер выглядит так:

public class IntToOfferPlaceConverter : ITypeConverter<int, OfferPlace>
    {
        private readonly IOfferPlaceLogic _logic;

        public IntToOfferPlaceConverter(IOfferPlaceLogic logic)
        {
            _logic = logic;
        }

        public OfferPlace Convert(int source, OfferPlace destination, ResolutionContext context)
        {
            var offerPlaceResult = _logic.GetById(source);
            if (offerPlaceResult.Success == false)
            {
                return null;
            }

            return offerPlaceResult.Value;
        }
    }

Prfoile в AutoMapper:

        public FileProfile()
        {
            CreateMap<FileDto, File>();

            CreateMap<int, OfferPlace>()
                .ConvertUsing<IntToOfferPlaceConverter>();
        }

Модуль в Autofac:

        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
                .AsClosedTypesOf(typeof(ITypeConverter<,>))
                .AsSelf();
        }

При отображении возникает такая ошибка:

MissingMethodException: No parameterless constructor defined for this object.
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, bool publicOnly, bool wrapExceptions, ref bool canBeCached, ref RuntimeMethodHandleInternal ctor)

AutoMapperMappingException: Error mapping types.

Mapping types:
FileDto -> File
GrillBer.WebApi.Dto.FileDto -> GrillBer.Models.File

Type Map configuration:
FileDto -> File
GrillBer.WebApi.Dto.FileDto -> GrillBer.Models.File

Destination Member:
OfferPlace

Проблема заключается в конструкторе, однако он регистрируется в autofac. Где я мог ошибиться?

...