gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:26:00 25 4
gpt4 key购买 nike

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

可能不必要的上下文:

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

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

最佳答案

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

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

但是,从某种意义上说,这是脆弱的,如果中间有一层,您关心的调用者在堆栈中的位置就会发生变化。但是,如果您将逻辑放在实用程序方法或扩展方法中,随着时间的推移就不难发展。

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

关于c# - 我怎样才能找出哪个对象创建了这个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10629302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com