如何获取从中执行目标代码的实例
本文关键字:目标 执行 代码 实例 何获取 获取 | 更新日期: 2023-09-27 17:57:21
可能的重复项:
在 C# 中获取方法的调用方
是否可以获取从中执行方法的对象实例?
例如。。。
public class Person
{
public string Name { get; set; }
public void PrintMyName()
{
NamePrinter np = new NamePrinter();
np.PrintName();
}
}
public class NamePrinter
{
public void PrintName()
{
Person p = ?;
Console.Writeline(p.Name);
}
}
public class Program
{
static void Main()
{
Person person = new Person() { Name = "Brandon"; }
person.PrintMyName();
}
}
有没有办法在打印名称方法中找到"p"?
编辑:上面一段代码中的问题可以通过许多不同的方式解决,而且非常容易。 请假设我并不愚蠢,这只是我能想出的最简单的代码段,以阐明我的问题。
您不能这样做,因为:
- 无法知道它可能是从哪个对象类型调用的。仅仅因为您从名为 Person 的类的实例调用它并不意味着这是可以调用它的唯一方法。
- 它可能根本不是从对象实例调用的。它可以从静态方法调用。
当调用类中的方法时,调用代码的任何内容都不会被推送到堆栈上(方法的参数除外),因此根本无法获取以这种方式使用的信息。
我认为,在您的情况下,正确的解决方案是将 Person 类型的参数添加到 PrintName()(我想您已经考虑过了?