【发布时间】:2012-06-03 15:09:42
【问题描述】:
我需要在对象的生命周期内更改一些基本计算。
我知道如何创建动态方法并通过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;
}
请注意,示例中的计算逻辑已大大简化。
【问题讨论】:
-
多态不适合你?