摘要:经常用反射创建对象的朋友一定用过Activator.CreateInstance方法,这段时间在学习IL用Emit也实现了这样一个功能,也支持多不同参数的构造。 不过动太方法的key构造并不理想所以在性能上有所损耗,但其性能还是优胜于Activator.CreateInstance方法。 以下是测试代码和工厂代码 public delegate object CreateInstance...
阅读全文
摘要:由于该方法是针对自需求编写的,所以不一定适合你的需要,但对于想学习的朋友可以作一个参考. private void MethodGenerator(ILGenerator il, MethodInfo method) { Type[] types = GetParameterTypes(method.GetParameters()); ...
阅读全文
摘要:最近一直在学习Emit,对指令有一些了解.总结了一些小经验在IL指令中经常的事情就 是把变量,参数推到堆栈上然后call一些方法,来来回回的这样做.下面贴个用DynamicMethod简单实现方法的代码:) using System; using System.Collections.Generic; using System.Reflection; using System.Reflection...
阅读全文
摘要:前段时间在写IL实现接口时遇到一个很迷惑的事情,就是无论以什么类型调用泛型方法其内部得到的CurrentMethodInfo都是一样,并不有带任何明确类型的信息;最后在没办法的情况我只好修改的IL的实现.下面分析一下发生的问题和解决我使用的解决方法. 假设有以下一个泛型方法 public IList ListData(T name) { MethodI...
阅读全文