是否可以使用AutoMapper来填充基类的属性?

时间:2016-08-05 16:21:45

标签: c# automapper

采用以下示例:

public class Parent
{
    public string Id {get; set;}

    public Parent(string id)
    {
        Id = id;
    }
}

public class Child : Parent
{
    public string Name {get; set;}

    public Child(string id, string name) : base(id) // <-- call base constructor
    {
        Name = name;
    }
}

这是关于如何在基类中设置属性的典型示例。

现在说我的基类包含50个属性。 我知道我可以逐行设置每个属性,但我想知道是否可以使用AutoMapper来填充属性?

我想在基类中做这样的事情:

public class MyClass
{
    public MyClassMapData(MY_DATA data)
            {
                // DOC_TRACK_MAIN
                var config = new MapperConfiguration(c =>
                {
                    c.CreateMap<MY_DATA , MyClass>();
                });

                // This will map the first 45 properties.
                var mappedData = config.CreateMapper().Map<MY_DATA , MyClass>(data.MyData);

                // DOC_TRACK_DETAILS
                mappedData.PROP_46 = data.Field1;
                mappedData.PROP_47 = data.Field2;
                mappedData.PROP_48 = data.Field3;
                mappedData.PROP_49 = data.Field4;
                mappedData.PROP_50 = data.Field5;            

            // How would I set mappedData to my current instance?    
            }

     // My 50 properties...
}

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望将mappedData映射到当前类。如果您将行var mappedData = config.CreateMapper().Map<MY_DATA , MyClass>(data.MyData);更改为config.CreateMapper().Map<MY_DATA , MyClass>(data.MyData, this);,则应将该数据映射到您的班级。然后你可以手动设置PROP_46 - PROP_50