我希望在C#中有一个程序,如果没有对象B就无法创建对象A,并且当对象B被销毁时,对象A将被自动拆除。所以对象A的存在完全取决于对象B的存在。
我知道可以在B的承包商内强制使用A,但是我想在应用程序的任何部分都无法创建A外部的B.也许是工厂模式?我不确定如何限制其他开发人员创建一个类,或使用某些标准创建它。
答案 0 :(得分:1)
我希望在C#中有一个程序,在没有对象B的情况下无法创建对象A
该部分很简单 - 只需让A
有一个带B
的构造函数。
并且当对象B被销毁时,对象A将被自动拆除。
那部分不是那么微不足道;特别是,您无法控制垃圾收集,也无法控制A
实例的引用,因此您可以做的最多就是make B
dispose < / strong> A
。
的确,如果A
取决于B
,那么A
可能会引用B
。这意味着如果A
可以访问(不是垃圾),那么既不是B
(因为它可以通过A
到达),因此{{1}首先不会收集。如果B
被摧毁,那么我们已经知道B
是吐司,同样的推理。从某个角度来看,这实际上可以实现你想要的一切。
在A
的处理中,实际做某事的唯一合理时间(而不仅仅是依赖于可访问的图表)。所以在这一点上你有类似的东西:
B
然而,在这一点上,类型是如此相互依赖,我质疑有两种类型的目的。有一些方法可以放松这种依赖关系并允许0- *映射,但这是一个奇怪的要求,我没有看到它的目的。