我在一个非常大的代码库中工作,今天我找到了一个在正常IL code
内发出class
的项目。
包含要发出的IL代码的项目是Service Locator
MSDN Desctiption的实现。
这样做有什么好处和为什么会这样做?与使用C#
语言相关?
答案 0 :(得分:14)
通常这样做是为了避免使用反射的开销,使用仅在运行时可用的信息。
然后,您可以使用反射,根据您的操作,反射速度很慢,可以构建一段新代码,直接使用给定的数据,而不使用反射。
优点:
缺点:
因此,在开始这项工作之前,你需要确保它真的物有所值。
请注意,这是常规答案。在您遇到的具体情况中,没有办法回答为什么这样做,也没有办法在没有实际看到代码的情况下具有哪些特定的优点(或缺点)。
答案 1 :(得分: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
祝你好运