Automapper - 动态类型映射

时间:2017-07-18 10:32:32

标签: c# .net automapper

当我尝试使用automapper映射在运行时生成的类时。

AssemblyName asmName = new AssemblyName(string.Format("{0}_{1}", "tmpAsm", Guid.NewGuid().ToString("N")));
AssemblyBuilder asmBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.Run);
ModuleBuilder moduleBuilder = asmBuilder.DefineDynamicModule("core");
TypeBuilder typeBuilder = GetTempModule().DefineType("MyDynamicClass", TypeAttributes.Public);
Type proxy = typeBuilder.CreateType();
var mc = new MapperConfiguration(cfg =>
{
    cfg.CreateMap(proxy, typeof(MyViewModel));
});

var mapper = mc.CreateMapper();
mapper.Map<MyViewModel>(Activator.CreateInstance(proxy));

我收到以下错误:

  

AutoMapper.AutoMapperMappingException:缺少类型映射配置   或不支持的映射。

尽管出现了错误消息,但您可以看到映射已被删除。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

尝试使用:

TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicClass", TypeAttributes.Public);

而不是:

TypeBuilder typeBuilder = GetTempModule().DefineType("MyDynamicClass", TypeAttributes.Public);

另外,请检查您正在使用的AutoMapper版本:我在6.1.1.0上测试