是否有可能告诉哪个文件在C#中实例化了一个类?例如,如果我有Page1.cs和Page2.cs,myclass.cs中的构造函数可以知道哪个页面从中创建了对象吗?
3 回答
富国沪深
TA贡献1790条经验 获得超9个赞
一个班级可以通过检查构造期间的堆栈跟踪来了解哪个班级实例化了它。因此,例如,如果要将其添加到类的构造函数中:
var creator = new StackTrace().GetFrame(1).GetMethod().DeclaringType.FullName;
...您将了解调用的代码的位置new
。位置与班级名称相同。您当然可以检查声明类型的属性,以了解程序集名称,位置等。
请记住,如果您链接了构造函数,则必须将堆栈框架走得更远。同样,这对于通过反序列化创建的任何对象均无效。
- 3 回答
- 0 关注
- 134 浏览
添加回答
举报
0/150
提交
取消