Automapper抽象类

时间:2014-09-30 12:25:04

标签: c# automapper dto

我有基类

 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时,我将得到

自动播放器例外:

Mapping types:
concreteA-> DtoBase
#NAMESPACE.concreteA -> #NAMESPACE.DtoBase

Destination path:
DtoBase

内部异常

无法创建抽象类的实例。

请注意,#NAMESPACE是我的类

的命名空间

如何执行适当的映射以避免此异常?

这背后的想法是,concreteA和concreteB可以动态地及时生长,可能有具体的C,具体的等等。 我不介意为更具体的类添加映射

1 个答案:

答案 0 :(得分:0)

除非您不使用代理类进行映射,否则您可能经常遇到类似的映射问题。

为您要映射的每个类创建代理类。

您可以从here

获得更多帮助