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