我得到的内容如下:
class Factory{
private List<FactorizableObject> _collected; //Collection of all created objects
public FactorizableObject createObject (someParams DontMatter){
FactorizableObject newObject = new FactorizableObject(DontMatter);
_collected.Add(newObject);
return newObject;
}
public void DoSomethingWithCollectedObjects(){
//Work with created objects
}
}
class UsingClass1{
private FactorizableObject myObject;
public UsingClass1(){
myObject = Factory.createObject(someParams);
}
}
class UsingClass2{
private FactorizableObject myObject;
public UsingClass2(){
myObject = Factory.createObject(someOtherParams);
}
}
class WorkingClass{
List<UsingClass1> someOfThese;
List<UsingClass2> someOfThose;
private void triggerWork(){
someOfThese.Remove(RemoveSomeObject);
Factory.DoSomethingWithCollectedObjects();
}
}
现在我的问题是:即使从这些列表中删除了usingClass的实例,工厂中的条目仍然保持活动状态并在调用DoSomethingWithCollectedObjects时使用。在尝试处理对象时,我期待类似NullreferenceException的东西。
问题:是否有办法杀死对象(对象的引用)而不从工厂集合中明确删除它?这需要在使用工厂的任何课程中完成,所以我想解决这个问题......
我需要这样的一些集合来对分解对象执行一些特殊操作,并且不想关心它们所在的位置(需要对所有对象执行操作)。我已经尝试在删除对象之前设置UsingClass1.myObject = null,但这只删除了我对分解对象的引用。