Question

J'ai un code qui reposait sur les méthodes qui ne sont pas inclinées:

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
    }
}

Bien sûr, cela ne fonctionne que si la méthode du dossier n'est pas inclinée. C'est la raison pour laquelle la classe de base dérive de MarshallByRefObject, qui empêche l'inlinaison des méthodes publiques.

Cela a fonctionné jusqu'à présent, mais j'ai obtenu un StackTrace à partir d'un serveur .NET 4 montrant que le Stackwalk a atteint l'appelant de Dosomething.

Le .NET 4 est-il plus intelligent et détecte-t-il que MyClass est interne et n'a aucune chance d'être substitué par un proxy?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top