Я использую экземпляр синглтона, созданный из вложенного класса. Этот экземпляр содержит некоторые статические коллекции, которые очищаются при удалении синглтона, но проблема в том, что я получаю ссылку на удаленный синглтон, отличный от NULL, который неправильно собирает мусор.
Я хотел бы знать, КОГДА и КАК полностью удалить и собрать мой экземпляр Singleton, чтобы при повторном запросе экземпляра после удаления (и установки значения null) создавался новый экземпляр.
Я использую следующий вложенный шаблон для экземпляра Singleton:
public class SingletonClass : IDisposable
{
private List<string> _collection;
private SingletonClass()
{
}
public static SingletonClass Instance
{
get
{
return Nested.Instance; //line 1 - this line returns the non-null instance after dispose and setting the Singleton instance to null which is causing problems
}
}
private void Init()
{
_collection = new List<string>();
//Add data to above collection
}
public void Dispose()
{
//Release collection
_collection.Clear();
_collection = null;
}
class Nested
{
static Nested()
{
Instance = new SingletonClass();
Instance.Init();
}
internal static readonly SingletonClass Instance;
}
}
Проблема в строке 1 заключается в том, что после удаления SingletonClass из клиентского класса объект _collection становится пустым, в то время как экземпляр SingletonClass остается ненулевым даже после установки = null .