2015-11-03 51 views
1

我想找到一个对象创建的第一个地方:(当它的构造函数被调用时)。 例如:假设我在DLL“DLL_A”中有A objA= new A();。 objA obejct已通过多次调用传递,直到我们到达处理此对象“objA”的DLL_B。如何查找创建对象的程序集?

DLL_B中是否有任何反射方法/方法知道Object_Obj_A是在DLL_A中创建的?

+0

尝试'objA.GetType()。Assembly.Location'或者如果你只是想知道哪个程序集,然后'objA.GetType()。Assembly'。 – Enigmativity

+5

所以,要清楚的是 - 你不是在寻找'A'类被定义的程序集,你基本上想要找到调用堆栈在构造对象时的样子?如果是这样,不。没有内置这样的功能。如果可以修改A的构造函数,它可以捕获这些信息,但是这听起来像是你没有定义的问题的错误解决方案。 –

+0

@Damien_The_Unbeliever是的,这是我的观点。大会,类和这个对象被创建的方法 –

回答

5

如果我理解正确,您需要A中的一个属性,该属性返回调用构造函数A的类的名称/方法。正确?

然后你可以使用Caller Information in C#:在CallerFilePathAttributeCallerLineNumberAttributeCallerMemberNameAttribute可以作为在A构造可选参数。

然后可以保存这些信息,同时仍然保留在字段/属性的构造函数中,然后再取回。

+0

@Micky这个想法是将调用者存储在对象内(在'A'内部),以便稍后可以检查它 – Jcl

相关问题