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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
