System.Reflection, System.Diagnostics 또는 다른 방법을 통해 메서드 자체에 전달하지 않고 정적 메서드를 호출하는 실제 인스턴스에 대한 참조를 가져올 수 있습니까? 이 라인리플렉션/진단을 통해 메소드 내에서 호출 인스턴스를 가져올 수 있습니까?
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();
}
}
내가 System.Diagnostics.StackTrace.GetFrames를 사용하여 유형을 얻을 수 있지만, 실제 인스턴스에 대한 참조를 얻을 수있는 방법이 함께
예를 들어무엇인가?
정적 호출과 정적 호출뿐만 아니라 리플렉션과 성능 문제를 알고 있으며, 일반적으로이 문제에 접근하는 올바른 방법이 아니라 일반적으로 거의 통틀어서입니다. 이 질문의 이유 중 일부는 그것이 가능하다면 나는 호기심이었다. 현재 인스턴스를 전달 중입니다.
ExecuteMethod(instance)
그리고 이것이 가능한지 여전히 궁금해하고 인스턴스에 계속 액세스 할 수있게되었습니다.
ExecuteMethod()
@ 스티브 쿠퍼 : 내가 확장 방법을 고려하지 않았다. 그것의 약간 변이는 작동 할지도 모르다.
이것은이 문제를 해결하는 매우 우아한 방법입니다. – ohmusama