我怎样才能找出哪个对象创建了这个对象

本文关键字:对象 创建 | 更新日期: 2023-09-27 18:34:29

有没有一种简单的方法来获取创建此对象的对象。我知道它将始终是某种对象类型,但我希望有一些简单的关键字来使用,例如在构造函数中this

可能不必要的上下文:

我一直在为我在 PowerPoint 中处理的这个加载项创建单元测试。有时您需要上一级并查看父对象以获取位置、字体大小等信息。直到现在,我都试图避免这种情况。

我想我可以编辑我的"模拟"并添加另一个构造函数,我将创建每个对象的对象传递给其子对象;但是,我觉得那里有更好的解决方案。哦,还有,这些模拟部分实现了Visual Studios Tools for Office提供的接口,它们的部分接口是Parent属性getter/setter。如果我不实现方法,它只会在调用该方法时抛出一个新NotImplementedException

我怎样才能找出哪个对象创建了这个对象

您可以从堆栈中获取调用方法,并从中推断出类名:

http://www.csharp-examples.net/reflection-calling-method-name/

但是,从某种意义上说,这是脆弱的,因为如果您在两者之间有一个层,那么您关心的调用者在堆栈中的位置就会发生变化。 但是,如果将逻辑放在实用工具方法或扩展方法中,则随着时间的推移,发展起来并不难。

查询调用堆栈并不是一个非常快的操作,但对于单元测试,这可能是可以接受的。