Auto Mapper Constructor initialization Mapping Issue

324 views Asked by At

I have the following Mapping configurations:-

Initialized Data:-

private static IEnumerable<Source> InitializeData()
    {
        var source= new[]
        {
            new Source("John", "Doe", "1111111111"),
            new Source("Jack", "Handsome", "2222222222"),
            new Source("Joe", "Mackenze", "3333333333")
        };
        return source;
    }

Source Model:

  public class Source
    {
        private string First { get; set; }
        private string Last { get; set; }
        private string Phone { get; set; }

        public Source(string first, string last, string phone)
        {
            First = first;
            Last = last;
            Phone = phone;
        }
    }

Destination Model

 public class Destination
    {
        public string First { get; set; }
        public string Last { get; set; }
        public string Phone { get; set; }
    }

Main

 static void Main(string[] args)
        {

            var config = new MapperConfiguration(cfg =>
            {
                cfg.AllowNullCollections = true;
                cfg.CreateMap<Source, Destination>().ReverseMap();
            });

            var mapper = new Mapper(config);

            var source= InitializeData();
            var people = mapper.Map<IEnumerable<Destination>>(source);

            foreach (var p in people)
            {
                Console.WriteLine("Name: {0}-{1} Phone: {2}", p.First, p.Last, p.Phone);
            }

            Console.ReadLine();
        }

Problem descriptions:

I have been struggled to understand the AutoMapper mapping between source and destination models. My source model has a constructor to initialize or accept data from outside. It works fine when I removed the source constructor from the model that's mean flat mapping works fine but constructor initialization has the issue. When I debug in VS2019, it shows the number of records but all fields are empty/null.

What is wrong with the above mapping. I have gone through the AutoMapper reference docs but do not get a hold on this issue.

I highly appreciate your help!

1

There are 1 answers

4
Lucian Bargaoanu On

Try calling AssertConfigurationIsValid. Check http://docs.automapper.org/en/latest/Configuration-validation.html.

Your Source properties are private. I assume you meant public.