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
并像往常一样映射它?
通过"与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
则不需要额外的配置。
在通过自动映射器运行对象之前,将对象拆箱为特定类型。自动映射器将无法将对象映射到对象。