Automapper - 映射嵌套在对象列表中的自定义对象
Automapper - Map custom object nested inside List of object
我需要将 List<Source>
映射到 List<Dest>
,问题是 Source 中包含 NestedObject
,而 Dest 中也包含 NestedObject
。在映射我的列表时,我也需要映射这两个。我已经尝试了所有方法,但要么嵌套对象始终保持 null
并且没有被映射,要么出现以下异常:
Missing type map configuration or unsupported mapping. Mapping types:
.....
来源和目的地的结构:
来源:
public class Source {
public string Prop1 { get; set; }
public CustomObjectSource NestedProp{ get; set; }
}
public class CustomObjectSource {
public string Key { get; set; }
public string Value{ get; set; }
}
目的地:
public class Destination {
public string Prop1 { get; set; }
public CustomObjectDest NestedProp{ get; set; }
}
public class CustomObjectDest {
public string Key { get; set; }
public string Value{ get; set; }
}
我试过的:
我有以下代码,也尝试了其他几种方法但无济于事:
var config = new MapperConfiguration(c =>
{
c.CreateMap<Source, Destination>()
.AfterMap((Src, Dest) => Dest.NestedProp = new Dest.NestedProp
{
Key = Src.NestedProp.Key,
Value = Src.NestedProp.Value
});
});
var mapper = config.CreateMapper();
var destinations = mapper.Map<List<Source>, List<Destination>>(MySourceList.ToList());
我被这个困扰了好几天,请帮忙。
您还必须将 CustomObjectSource 映射到 CustomObjectDest。
应该这样做:
var config = new MapperConfiguration(c =>
{
c.CreateMap<CustomObjectSource, CustomObjectDest>();
c.CreateMap<Source, Destination>()
.AfterMap((Src, Dest) => Dest.NestedProp = new CustomObjectDest
{
Key = Src.NestedProp.Key,
Value = Src.NestedProp.Value
});
});
var mapper = config.CreateMapper();
var MySourceList = new List<Source>
{
new Source
{
Prop1 = "prop1",
NestedProp = new CustomObjectSource()
{
Key = "key",
Value = "val"
}
}
};
var destinations = mapper.Map<List<Source>, List<Destination>>(MySourceList.ToList());
我需要将 List<Source>
映射到 List<Dest>
,问题是 Source 中包含 NestedObject
,而 Dest 中也包含 NestedObject
。在映射我的列表时,我也需要映射这两个。我已经尝试了所有方法,但要么嵌套对象始终保持 null
并且没有被映射,要么出现以下异常:
Missing type map configuration or unsupported mapping. Mapping types: .....
来源和目的地的结构:
来源:
public class Source {
public string Prop1 { get; set; }
public CustomObjectSource NestedProp{ get; set; }
}
public class CustomObjectSource {
public string Key { get; set; }
public string Value{ get; set; }
}
目的地:
public class Destination {
public string Prop1 { get; set; }
public CustomObjectDest NestedProp{ get; set; }
}
public class CustomObjectDest {
public string Key { get; set; }
public string Value{ get; set; }
}
我试过的: 我有以下代码,也尝试了其他几种方法但无济于事:
var config = new MapperConfiguration(c =>
{
c.CreateMap<Source, Destination>()
.AfterMap((Src, Dest) => Dest.NestedProp = new Dest.NestedProp
{
Key = Src.NestedProp.Key,
Value = Src.NestedProp.Value
});
});
var mapper = config.CreateMapper();
var destinations = mapper.Map<List<Source>, List<Destination>>(MySourceList.ToList());
我被这个困扰了好几天,请帮忙。
您还必须将 CustomObjectSource 映射到 CustomObjectDest。
应该这样做:
var config = new MapperConfiguration(c =>
{
c.CreateMap<CustomObjectSource, CustomObjectDest>();
c.CreateMap<Source, Destination>()
.AfterMap((Src, Dest) => Dest.NestedProp = new CustomObjectDest
{
Key = Src.NestedProp.Key,
Value = Src.NestedProp.Value
});
});
var mapper = config.CreateMapper();
var MySourceList = new List<Source>
{
new Source
{
Prop1 = "prop1",
NestedProp = new CustomObjectSource()
{
Key = "key",
Value = "val"
}
}
};
var destinations = mapper.Map<List<Source>, List<Destination>>(MySourceList.ToList());