我正在使用 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
在上面使用 with 行,我会得到以下异常:
缺少类型映射配置或不支持的映射。
映射类型:B`1 -> A`1 ConsoleApplication64.Program+B`1[[ConsoleApplication64.Program+BData, ConsoleApplication64, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> ConsoleApplication64.Program+A `1[[ConsoleApplication64.Program+AData,ConsoleApplication64,版本=1.0.0.0,文化=中性,PublicKeyToken=null]]
目标路径:A`1
源值:ConsoleApplication64.Program+B`1[ConsoleApplication64.Program+BData]
我做错了什么,还是我们实际上不能ReverseMap
与开放泛型一起使用?