c# – 在运行时动态创建函数

前端之家收集整理的这篇文章主要介绍了c# – 在运行时动态创建函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
它可能甚至不可能这样做,但无论如何我会问.
是否可以创建一个接收字符串的函数,然后将其用作lambda中使用的转到运算符(=>)的右侧参数?

实际上,我想要做的是能够在运行时重新定义特定类的特定方法.我希望在程序运行时写下一个函数并将其附加到委托.可能吗?

解决方法

最简单的方法可能就是TcKs建议的DLINQ.

最快的(我相信,在3.5中)是创造一个DynamicMethod.它也是最可怕的方法.你实际上是使用IL构建一个方法,它与在机器语言中编写代码的感觉大致相同.

我需要这样做才能动态地将事件处理程序附加到某些东西上(好吧,我不需要这样做,我只是想让单元测试事件更容易).当时看起来有点令人生畏,因为我不知道有关IL的废话,但我想出了一个简单的方法来实现这一目标.

你所做的是创建一个完全符合你想要的方法.越紧凑越好.如果我能弄清楚你想要做什么,我会提供一个例子.您在DLL项目中的类中编写此方法,并在发布模式下编译它.然后在Reflector中打开DLL并反汇编您的方法. Reflector为您提供了您希望反汇编的语言选项 – 选择IL.现在,您需要添加到动态方法中的确切调用.只需按照MSDN上的示例,为您反映的方法代码切换示例的IL.

动态方法一旦构造,就会以与编译方法大致相同的速度调用(看到一个测试,其中动态方法可以在~20ms内调用,其中反射超过200ms).

猜你在找的C#相关文章