none
c#编译缓存问题 RRS feed

  • 问题

  • 假如有一个C#编写的实例类A,在调用A的时候,我用额外的方法B对A中的某些变量进行了注入赋值。我想请问各位高手,在这样情况下,如果是在调试模式下,每次都会进入注入方法B,然后然后再次返回A。那么在发布情况下,调用A时,还会每次都调用B后再次返回吗?如果是的话,怎样加到代码编译缓存,如果不是,请问编译缓存机制是怎样的?谢谢!
    2014年10月20日 1:09

答案

  • 会,还会,无法加到代码编译缓存,注入是运行时行为,不是编译行为。另外我不太明白“编译缓存”的具体概念,你是否将其同“本机映像缓存”混淆了?

    • 已标记为答案 jizhong 2014年10月22日 8:56
    2014年10月20日 2:19

全部回复

  • 会,还会,无法加到代码编译缓存,注入是运行时行为,不是编译行为。另外我不太明白“编译缓存”的具体概念,你是否将其同“本机映像缓存”混淆了?

    • 已标记为答案 jizhong 2014年10月22日 8:56
    2014年10月20日 2:19
  • 说得对,发帖后,我思考了下,发现是将“本机映像缓存”给混淆了。

    我这样做的目的是:将原有的业务代码保持不变,在运行时将一些权限检查的代码注入到原代码中。刚刚像您提到的,这是运行时行为,无法不调用。如果想实现本机映像缓存,那么只能在编译前,通过修改业务代码实现了?请问这2中思路,您认为哪种更优?

    2014年10月20日 3:17
  • 这需要根据你的需求考虑,主要考察权限检查的业务逻辑的变动对代码的影响程度,从变动的频律,原代码受影响的程度来考虑。

    2014年10月20日 5:11
  • 谢谢回复,受教了。
    2014年10月22日 8:56