2009-11-10 39 views
4

我見過很多與如何調用像這樣和那樣的方法相關的問題。我沒有找到的是如何在csharp中通過反射或其他方式調用方法的不同選項列表。在C#中動態調用方法的選項

有人可以詳細解釋動態調用csharp中的方法的不同方法嗎?從反射到發射IL和其中任何其他方式。我想知道在資源方面從最昂貴到最便宜的所有不同方式。

回答

5

爲了讓您一開始,這裏是調用.NET中的方法,我能想到的辦法:

  • 呼叫
  • Callvirt
  • 代表
  • DynamicMethod的
  • 的MethodInfo。 Invoke
  • Type.InvokeMember
  • TypeDescriptor
  • Reflection.Emit的
  • 表達式樹

我記得一些文章比較他們大多數人的速度,但我似乎無法在瞬間找到它。

一個快速谷歌搜索想出這些鏈接:[Link][Link][Link][Link][Link]

+0

可以提供最流行的代碼片段?這些是按性能成本安排的嗎? – 2009-11-10 16:22:44

+0

當然,C#4中的「動態」功能使用了上述所有功能。 :-) – 2009-11-10 16:29:48