没有和不在另一个对象之外的对象不能存在

时间:2017-04-06 08:07:31

标签: c# oop idisposable

我希望在C#中有一个程序,如果没有对象B就无法创建对象A,并且当对象B被销毁时,对象A将被自动拆除。所以对象A的存在完全取决于对象B的存在。

我知道可以在B的承包商内强制使用A,但是我想在应用程序的任何部分都无法创建A外部的B.也许是工厂模式?我不确定如何限制其他开发人员创建一个类,或使用某些标准创建它。

1 个答案:

答案 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- *映射,但这是一个奇怪的要求,我没有看到它的目的。