问题
我需要动态创建类型(没有动态或ExpandoObject ),我需要在返回查询时获取强类型(动态制作)。
我尝试过使用Reflection.Emit
和CodeDOM
,但都保留了在内存中创建的符号。
我的尝试
使用Reflection.Emit
,我尝试了AssemblyBuilderAccess.RunAndCollect
,这项工作正常,但我的查询(Dapper)上没有使用该类型并调用GC.Collect()
。
我尝试过处理Reflection.Emit
的对象,但没有成功(https://stackoverflow.com/questions/2503645/reflect-emit-dynamic-type-memory-blowup?answertab=active#tab-top);
我尝试使用GC.Collect()
,GC.SuppressFinalize()
来释放变量,但不起作用。
我尝试在另一个AppDomain上创建类型,在使用后卸载域,但我做不到,原因有两个:
1.应该在DoCallBack上使用,如果我这样做,我不能将该类型传递给另一种方法;
2.尝试在DoCallBack外部使用我收到错误:"Type 'System.Reflection.Emit.AssemblyBuilder' in assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable."
有人知道如何解决这个问题吗?