当聚类为另一个类的成员时,如何获取类的"所有者"(而不是父级)

use*_*291 0 c#

聚合优先于继承.在继承中可以知道父.在聚合中如何知道C#中的所有者?

如果我添加一个明确的引用,那是邪恶的,因为我会以另一种方式创建一个依赖,而编译器肯定知道父.有没有办法破解使用反射或其他东西,除了创建此引用.

如果所有者不知道,Visual Studio如何构建调用堆栈?Visual Studio知道连接实例的所有链接,因此应该有办法完成Visual Studio的工作吗?

Jon*_*eet 6

如果不为其添加代码,则不能.哎呀,一个实例可能被"包含"在几个不同的对象中:

IAuthenticator authenticator = new PasswordAuthenticator();
Foo foo = new Foo(authenticator);
Bar bar = new Bar(authenticator);
Run Code Online (Sandbox Code Playgroud)

假设双方foobar记住认证,其中哪些是单一的"所有者" PasswordAuthenticator的实例?

更重要的是,为什么你需要知道?如果您确定"子"对象知道关系有一个非常好的设计理由,请为其添加适当的代码(可能是一个事件,如果根据您的需要这是合理的).但要确保它首先是必要的.