基本上让我说我有一个类a,有类B的成员。是否有可能使用反射来获得a的实例(如果有的话)是从B的构造函数内创建B的实例?
class A
{
private B b = new B();
}
class B
{
public B()
{
// How could I get the instance of A (object), if any, that is creating me?
}
}
伙计们,我的最终目标是创建一个通用的可绑定属性类,它能够定位它的父类的PropertyChanged接口(如果实现了)来自动通知属性。假设我有一个名为MyBindableProp的类,它在实现INotifyPropertyChanged接口的类中使用。我想要的是通过声明属性MyBindableProp {get;设置;}。如果我能找到托管对象,我知道怎么做剩下的。
一定要用反射吗?你可以把A
的实例传递给B
。
class A
{
private B b;
public A() {
b = new B(this);
}
}
class B
{
private readonly A a;
public B(A a) {
this.a = a;
}
}
编辑:我正在看你的评论,你说"我怎么能得到A(对象)的实例,如果有,那就是创建我?"我猜B
并不总是从A
创建的,所以你可以在B
上暴露另一个不带任何参数的构造函数:
class B
{
private readonly A _a;
public B() {}
public B(A a) {
_a = a;
}
}
然后确保_a
在使用之前被初始化:
if (_a != null)
...
您可以让b构造函数获得A的实例public B(A instance)
{this.AObject=instance;} private B b=new B(this)
我的建议是:
class B
{
private A myA;
public B(A yourA)
{
myA = yourA;
}
}
在某些课程中应该有
private B myB;
public void createB() {
myB = new B(this);
}
,你将从这个继承类,所以你可以使用createB
,它将调用B的参数化构造函数,你不必一直传递this
。