【发布时间】:2017-04-07 05:53:01
【问题描述】:
我当前的任务需要注意不同对象类型之间的映射,因此我认识到了非常好的 AutoMapper 库。
到目前为止很容易处理,但这些不同的对象包含复杂的接口类型属性。让我给你看一个代码sn-p:
public inferface IInterface
{
string TextProperty { get; set;}
}
public class A : IInterface
{
string TextProperty { get; set; }
}
public class B : IInterface
{
string TextProperty { get; set; }
}
public inferface IComplexInterface
{
IInterface ComplexProperty { get; set; }
}
public class ComplexA : IComplexInterface
{
IInterface ComplexProperty { get; set; }
}
public class ComplexB : IComplexInterface
{
IInterface ComplexProperty { get; set; }
}
在我的情况下,A 类可能映射到B 类,反之亦然。
通过配置CreateMap<A, B>();从A类型映射到B是没有问题的
从 ComplexA 类映射到 ComplexB 类会引发异常:
错误映射类型。
映射类型:
- 复合体A -> 复合体B
- NamespaceOfComplexA.ComplexA -> NamespaceOfComplexB.ComplexB
类型映射配置:
- 复合体A -> 复合体B
- NamespaceOfComplexA.ComplexA -> NamespaceOfComplexB.ComplexB
属性:
- 复杂属性
我已经在 stackoverflow 上找到的一个可能的解决方案可能是如下配置:
CreateMap<A, IInterface>().As<B>();
CreateMap<B, IInterface>().As<A>();
但就我而言,它不起作用。
有什么建议吗?
【问题讨论】:
标签: interface automapper