删除对象的第二个引用

时间:2018-04-25 14:21:08

标签: c# reference factory

我得到的内容如下:

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,但这只删除了我对分解对象的引用。

0 个答案:

没有答案