有没有办法通过 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()
@Steve Cooper:我没有考虑过扩展方法。一些变化可能会起作用。