c# – .Net 4内联MarshalByRefObject方法吗?
发布时间:2020-12-15 07:50:03 所属栏目:百科 来源:网络整理
导读:我有一些代码依赖于没有内联的方法: internal class MyClass : BaseClass{ // should not be inlined public void DoSomething(int id) { base.Execute(id); }}public abstract class BaseClass : MarshallByRefObject{ [MethodImpl(MethodImplOptions.NoIn
我有一些代码依赖于没有内联的方法:
internal class MyClass : BaseClass { // should not be inlined public void DoSomething(int id) { base.Execute(id); } } public abstract class BaseClass : MarshallByRefObject { [MethodImpl(MethodImplOptions.NoInlining)] protected void Execute(params object[] args) { // does a stack walk to find signature of calling method } } 当然,只有在未内联DoSomething方法时,这才有效.这就是基类派生自MarshallByRefObject的原因,它阻止了公共方法的内联. 它一直工作到现在,但我从.Net 4服务器得到了一个堆栈跟踪,显示堆栈行走到了DoSomething的调用者. .Net 4内联是否更加聪明并且检测到MyClass是内部的并且没有机会被代理替换? 解决方法
这里的评论者建议你还需要指定NoOptimisation来实现你想要的.
http://connect.microsoft.com/VisualStudio/feedback/details/162364/methodimpl-methodimploptions-noinlining-doesnt-work-correctly-on-x64 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |