Gibt es eine Möglichkeit über System.Reflection, System.Diagnostics oder andere einen Verweis auf die aktuelle Instanz zu erhalten, die sich ohne den Weg es in dem Verfahren eine statische Methode ruft?Kann ich die aufrufende Instanz innerhalb einer Methode über Reflektion/Diagnose abrufen?
Zum Beispiel etwas in diese Richtung
class A
{
public void DoSomething()
{
StaticClass.ExecuteMethod();
}
}
class B
{
public void DoSomething()
{
SomeOtherClass.ExecuteMethod();
}
}
public class SomeOtherClass
{
public static void ExecuteMethod()
{
// Returns an instance of A if called from class A
// or an instance of B if called from class B.
object caller = getCallingInstance();
}
}
ich die Art bekommen kann System.Diagnostics.StackTrace.GetFrames verwenden, aber ist es eine Möglichkeit, einen Verweis auf die aktuelle Instanz zu bekommen?
Ich bin mir der Probleme mit Reflexion und Leistung, sowie statischen zu statischen Aufrufen bewusst, und dass dies im Allgemeinen, vielleicht sogar fast universell, nicht der richtige Weg ist, dies zu erreichen. Ein Teil des Grundes dieser Frage ist, dass ich neugierig war, ob es machbar war; Die Instanz wird gerade übergeben.
ExecuteMethod(instance)
Und ich habe mich gefragt, ob dies möglich ist und weiterhin auf die Instanz zugreifen kann.
ExecuteMethod()
@Steve Cooper: hatte ich nicht Erweiterungsmethoden in Betracht gezogen. Eine Variation davon könnte funktionieren.
Dies ist eine sehr elegante Möglichkeit, dieses Problem zu lösen – ohmusama