Domanda

Ho del codice che si basava su metodi che non venivano inlineati:

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

Naturalmente questo funziona solo se il metodo Dosomething non è inlineato. Questo è il motivo per cui la classe base deriva MarshallByRefObject, che impediscono l'interesse dei metodi pubblici.

Fino ad ora ha funzionato, ma ho ottenuto una stacktrace da un server .NET 4 che mostrava che lo stackwalk ha raggiunto il chiamante di Dosomething.

.NET 4 è più intelligente e rileva che Myclass è interno e non ha possibilità di essere sostituito con un proxy?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top