2017-07-18 197 views
2

当我尝试使用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 : Missing type map configuration or unsupported mapping.

尽管错误消息说的话,映射已经decleared,你可以看到。任何建议?

+0

测试是没有什么更多的异常消息(通常说明它缺少哪个映射,基本上是在哪些类之间) –

回答

0

尝试使用:

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

相反的:

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

此外,检查您正在使用的AutoMapper的版本:我在6.1.1.0