我需要在对象的生命周期内更改一些基本计算。
我知道如何创建一个动态方法并通过它来调用它delegate.Invoke
;但是它的成本是静态方法调用的两倍。
是否可以在现有方法中发出 CIL?
假设一种方法调用另一种方法,而另一种方法可以有不同的主体(一次一个):
public void Worker()
{
while(true)
{
int a = queueA.Dequeue();
int b = queueB.Dequeue();
int c = Calculate(a,b);
}
}
int Calculate(int a, int b)
{
// here goes dynamic code.
// could be return a - b;
// could be return b - a;
}
请注意,示例中的计算逻辑已大大简化。