6

我在一个非常大的代码库中工作,今天我发现了一个IL code在普通class.

包含正在发出的 IL 代码的项目是Service Locator MSDN 描述的实现。

这样做有什么好处,为什么要这样做而不是使用该C#语言?

4

2 回答 2

14

通常这样做是为了规避使用反射的开销,使用仅在运行时可用的信息。

然后,您将使用反射(根据您的操作可能会很慢)来构建一段新的代码,该代码直接使用给它的数据,而不使用反射。

好处:

  • 表现

缺点:

  • 难以调试
  • 很难做对
  • 之后很难阅读代码
  • 陡峭的学习曲线

因此,在开始之前,您需要确保它真的物有所值。

请注意,这是一个普遍的答案。在您遇到的特定情况下,没有办法回答为什么要这样做,或者如果没有实际看到代码,您会有哪些特定的优点(或缺点)。

于 2013-07-30T12:15:19.163 回答
3

这有很多用途。
更常用的场景之一是动态更改/注入代码:
.NET CLR Injection: Modify IL Code during Run-time


一个很好的教程可以帮助我理解它的好用处: Dynamic... But Fast: The Tale of Three Monkeys, A Wolf and the DynamicMethod and ILGenerator Classes


祝你好运

于 2013-07-30T12:24:57.100 回答