我正在使用AutoMapper 4.1.1(NuGet上的最新稳定版),看起来在开放式通用ReverseMap
上使用CreateMap
似乎不起作用。
示例程序:
static void Main(string[] args)
{
//Mapper.CreateMap(typeof(A<>), typeof(B<>)).ReverseMap(); // Doesn't work.
Mapper.CreateMap(typeof(A<>), typeof(B<>)); // Works.
Mapper.CreateMap(typeof(B<>), typeof(A<>)); // Works.
Mapper.CreateMap<AData, BData>().ReverseMap();
var b = new B<BData> { Data = new BData { Info = "Test" } };
var a = Mapper.Map<A<AData>>(b);
}
public class A<T>
{
public T Data { get; set; }
}
public class B<T>
{
public T Data { get; set; }
}
public class AData
{
public string Info { get; set; }
}
public class BData
{
public string Info { get; set; }
}
如果我在其上使用ReverseMap
行,则会出现以下异常:
缺少类型映射配置或不支持的映射。
映射类型: B`1 - &gt; A`1 ConsoleApplication64.Program + B`1 [[ConsoleApplication64.Program + BData,ConsoleApplication64,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]] - &gt; ConsoleApplication64.Program + A`1 [[ConsoleApplication64.Program + AData,ConsoleApplication64,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]
目的地路径: A`1
来源价值: ConsoleApplication64.Program + B`1 [ConsoleApplication64.Program + BDATA]
我做错了什么,或者我们真的不能将ReverseMap
用于开放式泛型?