How to use Automapper to construct object without default constructor

前端 未结 2 417
栀梦
栀梦 2020-12-10 02:02

My objects don\'t have a default constructor, they all require a signature of

new Entity(int recordid);

I added the following line:

相关标签:
2条回答
  • 2020-12-10 02:54

    Try

    Mapper.CreateMap<EntityDTO, Entity>().ConstructUsing(s => new Entity(s.RecordId));
    
    0 讨论(0)
  • 2020-12-10 02:56

    You could use ConstructUsing instead of ConvertUsing. Here's a demo:

    using System;
    using AutoMapper;
    
    public class Source
    {
        public int RecordId { get; set; }
        public string Foo { get; set; }
        public string Bar { get; set; }
    }
    
    public class Target
    {
        public Target(int recordid)
        {
            RecordId = recordid;
        }
    
        public int RecordId { get; set; }
        public string Foo { get; set; }
        public string Bar { get; set; }
    }
    
    
    class Program
    {
        static void Main()
        {
            Mapper
                .CreateMap<Source, Target>()
                .ConstructUsing(source => new Target(source.RecordId));
    
            var src = new Source
            {
                RecordId = 5,
                Foo = "foo",
                Bar = "bar"
            };
            var dest = Mapper.Map<Source, Target>(src);
            Console.WriteLine(dest.RecordId);
            Console.WriteLine(dest.Foo);
            Console.WriteLine(dest.Bar);
        }
    }
    
    0 讨论(0)
提交回复
热议问题