如何比使用DynamicInvoke更快地调用委托?

目前我使用的DynamicInvoke非常慢。 仍然使用Delegate类型,我怎样才能直接调用Delegate没有迟绑定/ DynamicInvoke

Delegate _method;    
_method.DynamicInvoke(_args);

谢谢。


开源框架Impromptu- FastDynamicInvokeDelegate添加了一个名为FastDynamicInvoke的扩展方法,该方法通过使用DLR而不是反射运行,比DynamicInvoke运行速度快了20多倍。

using ImpromptuInterface

...

_method.FastDynamicInvoke(_args);

Invoke速度更快,但它有点“隐藏”。 从代理类的MSDN

公共语言运行时为每个委托类型提供一个Invoke方法,与委托具有相同的签名。 您不必从C#,Visual Basic或Visual C ++显式调用此方法,因为编译器会自动调用它。 当您想要查找委托类型的签名时,Invoke方法在反射中很有用。

这意味着当你创建一个委托类型时,编译器Invoke成员添加正确的签名。 这允许调用而无需通过DynamicInvoke

在C#中,你可以像这样使用它:

_method(_args);
//or
_method(typedArg1, typedArg2, andSoOn);

像调整普通方法一样调用它。 这实际上调用了Invoke ,这对你来说应该快得多。

链接地址: http://www.djcxy.com/p/48393.html

上一篇: How do I invoke a Delegate faster than by using DynamicInvoke?

下一篇: How to add newlines or carriage returns to description on facebook graph API