gpt4 book ai didi

c# - 有没有办法从另一个的构造函数中获取父对象(托管对象)?

转载 作者:行者123 更新时间:2023-12-01 20:09:25 26 4
gpt4 key购买 nike

基本上可以说,我有一个类 A,它有类 B 的成员。是否可以使用反射来获取从 B 的构造函数中创建 B 实例的 A 实例(如果有)?

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?
}
}

伙计们,我的最终目标是创建一个通用的可绑定(bind)属性类,该类能够找到其父级的 PropertyChanged 接口(interface)(如果已实现)以自动通知属性。假设我有一个名为 MyBindableProp 的类,该类在实现 INotifyPropertyChanged 接口(interface)的类中使用。我想要的是通过简单地将属性声明为 MyBindableProp { get; 来自动 Hook 。放; }。如果我能找到托管对象,我就知道如何完成剩下的事情。在构造函数中传递它是不可能的。

最佳答案

必须使用反射吗?您可以将 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)
...

关于c# - 有没有办法从另一个的构造函数中获取父对象(托管对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25129517/

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