C#:如何使automapper map属于object类型的属性?

时间:2016-02-25 14:04:42

标签: c# automapper

这是源对象:

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并按原样映射?

2 个答案:

答案 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将无法将对象映射到对象。