【发布时间】:2010-10-05 18:06:56
【问题描述】:
考虑以下场景。我有许多共享一个公共基类的类,并且我为每个派生类定义了一个自动映射器映射。像这样的:
class A : Base {}
class B : Base {}
class ContractA : ContractBase {}
class ContractB : ContractBase {}
void Foo()
{
Mapper.CreateMap<A, ContractA>();
Mapper.CreateMap<B, ContractB>();
}
到目前为止一切顺利。但现在我想创建一个这样的方法:
ContractBase Foo()
{
Base obj = GetObject();
return Mapper.???
}
问题是 AutoMapper 的所有 Map 变体都要求我要么在编译时知道目标类型,要么在运行时拥有该类型的对象。这非常令人沮丧,因为我只为每种源类型定义了一个映射。 AutoMapper 应该能够仅根据源类型推断目标类型。
有什么好的办法吗?我想避免创建将源类型映射到目标类型的字典。虽然这可行,但这意味着我基本上必须为每种源类型定义两个映射。
【问题讨论】:
-
使用 valueinjecter.codeplex.com
标签: c# automapper