这是源对象:
public class Source {
public object Obj { get; set; }
}
此处对象实际上是SourcePropertyType
。
我想将Source转换为:
public class Destination {
public object Obj { get; set; }
}
其中对象为DestinationPropertyType
(与SourcePropertyType
相同)
var destination = map.Map<Source, Destination>(source);
var myObj = destination.Obj as DestinationPropertyType;
在上面的代码myObj == null
中,即使设置了源上的Obj。
我希望这是有道理的。如何更改AutoMapper配置以使其了解目标是DestinationPropertyType
并按原样映射?
答案 0 :(得分:0)
与SourcePropertyType
&#34;相同我假设你的意思是他们有相同的属性和类型。在这种情况下,您只需要让AutoMapper在两者之间创建一个映射,并配置包含类型的映射以使用它:
Mapper.CreateMap<SourcePropertyType, DestinationPropertyType>();
Mapper.CreateMap<Source, Destination>()
.ForMember(d => d.obj,
o => o.MapFrom(s => Mapper.Map<DestinationPropertyType>(s.obj As SourcePropertyType) as Object);
请注意,如果属性类型是实际类型而不是object
,则您不需要额外配置。
答案 1 :(得分:0)
在通过Automapper运行对象之前,将对象解包为特定类型。 Automapper将无法将对象映射到对象。