1

I use AutoMapper 8 in a project and I want to make use of a resolver as shown below. The problem I got this message error:

MissingMethodException: No parameterless constructor defined for this object.

and I don't know if I missing something here.

public class ExcelClientProfile : Profile
    {
        public ExcelClientProfile()
        {
            CreateMap<Ticket, ExcelClient>()
                ...
                .ForMember(d => d.FormModel, s => s.MapFrom<FormBuilderWithAnswerResolver>());
        }
    }

    public class FormBuilderWithAnswerResolver : IValueResolver<Ticket, ExcelClient, FormModel>
    {
        private IFormBuilderService _formBuilderService;

        public FormBuilderWithAnswerResolver(IFormBuilderService formBuilderService)
        {
            _formBuilderService = formBuilderService;
        }

        public FormModel Resolve(Ticket source, ExcelClient destination, FormModel destMember, ResolutionContext context)
        {
            return _formBuilderService.GetFormBuilderWithAnswersExcel(source);
        }
    }

Do you know how can I make this work?

Thank you,

David


Stacktrace

An unhandled exception occurred while processing the request. 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: Ticket -> ExcelClient Core.Models.Ticket -> Service.Models.TicketOrderView.ExcelClient

Type Map configuration: Ticket -> ExcelClient Core.Models.Ticket -> Service.Models.TicketOrderView.ExcelClient

Destination Member: FormModel lambda_method(Closure , IQueryable , ICollection , ResolutionContext )

AutoMapperMappingException: Error mapping types.

Mapping types: IQueryable1 -> ICollection1 System.Linq.IQueryable1[[Core.Models.Ticket, Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> System.Collections.Generic.ICollection1[[Service.Models.TicketOrderView.ExcelClient, Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]

And also:

    public class Ticket : Entity
        {
            public int Id { get; set; }
            ...
            public virtual FormBuilder FormBuilder { get; set; }
            public Ticket()
            {

            }

            public object Clone()
            {
                return this.MemberwiseClone();
            }
        }

        public class ExcelClient
        {
            ...
public virtual FormModel FormModel { get; set; }
            public ExcelClient()
            {

            }
        }
David Létourneau
  • 1,250
  • 2
  • 19
  • 39

0 Answers0