Automapper abstract class
本文关键字:class abstract Automapper | 更新日期: 2023-09-27 18:25:08
我有基类
public abstract class DtoBase //NOTICE that this class is abstract
{
//some DTO specific things
}
public class concreteA_Dto : DtoBase
{
//some properties from A
}
public class concreteB_Dto : DtoBase
{
//some properties from B
}
然后我上了一些课,他们彼此不认识
public class concreteA //NOTICE that there is NO base class
{
//some properties from A
}
public class concreteB
{
//some properties from B
}
我想要的是以这种方式使用Automapper:
private DtoBase GetResourceDto(object value)
{
return Mapper.Map<DtoBase>(value);
}
到目前为止,我的地图是这样的:
CreateMap<concreteA, DtoBase>()
.Include<concreteA, concreteA_Dto>();
CreateMap<concreteA, concreteA_Dto>();
但是当我用concreteA的某个实例调用方法GetResourceDto时,我会得到
Automapper异常:
Mapping types:
concreteA-> DtoBase
#NAMESPACE.concreteA -> #NAMESPACE.DtoBase
Destination path:
DtoBase
内部异常
无法创建抽象类的实例
注意#NAMESPACE是类的名称空间
如何执行正确的映射以避免此异常?
这背后的想法是,混凝土A和混凝土B可以随着时间的推移而动态增长,可能会有混凝土C、混凝土D等。我不介意为更具体的类
除非不使用代理类进行映射,否则您可能经常会遇到类似的映射问题。
为要映射的每个类创建代理类。
您可以从这里获得更多帮助