none
C#内嵌IL代码 RRS feed

  • 问题

  • 如题.


    某些资料上说是可以内嵌IL代码的,但是 Microsoft Connect 上相关问题的答复是毫无必要支持嵌入IL代码。


    究竟支不支持?



    ------------------------------------------------------------------------------

    rrrfff
    2011年9月12日 6:42

答案

  • 支持的。不过需要使用 Reflection Emit。

    语言级别的支持是没有的,不像 C++ 可以 __asm,C# 确实没有意义支持内联 IL (很多 IL 的功能 C# 没有,比如带参数的 static 构造),如果允许内联,则一定乱套。

    使用 Reflection Emit 可以动态产生一个 AppDomain,然后建立一个动态的 Type,然后用 ILGenerator 去写 IL 就可以了。

    我的博客上有一篇文章是利用了这个技术的,参考:http://www.markzhou.com/blog/post/2011/06/02/Use-dynamic-type-in-Entity-Framework-41-SqlQuery()-method.aspx

    这种技术不能十全十美的。比如不能在当前 AppDomain 上的当前执行上下文 (Execution Context) 上 Emit IL。


    Mark Zhou
    2011年9月12日 8:55

全部回复