我在一个非常大的代码库中工作,今天我发现了一个IL code
在普通class
.
包含正在发出的 IL 代码的项目是Service Locator
MSDN 描述的实现。
这样做有什么好处,为什么要这样做而不是使用该C#
语言?
我在一个非常大的代码库中工作,今天我发现了一个IL code
在普通class
.
包含正在发出的 IL 代码的项目是Service Locator
MSDN 描述的实现。
这样做有什么好处,为什么要这样做而不是使用该C#
语言?
通常这样做是为了规避使用反射的开销,使用仅在运行时可用的信息。
然后,您将使用反射(根据您的操作可能会很慢)来构建一段新的代码,该代码直接使用给它的数据,而不使用反射。
好处:
缺点:
因此,在开始之前,您需要确保它真的物有所值。
请注意,这是一个普遍的答案。在您遇到的特定情况下,没有办法回答为什么要这样做,或者如果没有实际看到代码,您会有哪些特定的优点(或缺点)。
这有很多用途。
更常用的场景之一是动态更改/注入代码:
.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
祝你好运