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

本文关键字:基类 属性 填充 可以使 AutoMapper 是否 | 更新日期: 2023-09-27 18:00:58

以以下示例为例:

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...
}

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

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