考虑以下情况。我有许多共享公共基类的类,并为每个派生类定义了一个自动映射器映射。像这样的:如何使用Automapper将对象映射到未知的目标类型?
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的地图变种的要求,我无论是在编译时知道目标类型或具有该类型在运行时可用的对象。这是非常令人沮丧的,因为我只为每个源类型定义了一个映射。 AutoMapper应该能够推断仅给定源类型的目标类型。
有没有什么好办法解决这个问题?我想避免创建一个字典映射源类型到目标类型。虽然这会起作用,但这意味着我基本上必须为每个源类型定义两个映射。
使用valueinjecter.codeplex.com – Omu 2010-10-05 20:21:09