C#:如何使自动映射器映射成为对象类型的属性

本文关键字:映射 对象 类型 属性 何使自 | 更新日期: 2023-09-27 18:36:15

这是源对象:

public class Source {
    public object Obj { get; set; }
}

这里的对象实际上是一个SourcePropertyType

我想将源转换为:

public class Destination {
    public object Obj { get; set; }
}

其中对象DestinationPropertyType(与SourcePropertyType相同)

var destination = map.Map<Source, Destination>(source);
var myObj = destination.Obj as DestinationPropertyType;

在上面的代码中,即使设置了源代码上的 Obj,myObj == null也是如此。

我希望这是有道理的。如何更改自动映射器配置,以便它了解目标是一个DestinationPropertyType并像往常一样映射它?

C#:如何使自动映射器映射成为对象类型的属性

通过"与SourcePropertyType相同",我假设你的意思是它们具有相同的属性和类型。 在这种情况下,您只需要让 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则不需要额外的配置。

在通过自动映射器运行对象之前,将对象拆箱为特定类型。自动映射器将无法将对象映射到对象。