我通过传递MyServiceLibrary
对象来构建IServiceProvider
实例,然后通过GetInstance()
_serviceProvider = (IServiceProvider)GetInterface("IServiceProvider");
MyServicesLibrary.BuildInstance(_serviceProvider);
var _myserviceLib= MyServicesLibrary.GetInstance();
BuildInstance是:
public static void BuildInstance(IServiceProvider serviceProvider)
{
if (serviceProvider == null)
{
throw new ArgumentNullException("serviceProvider");
}
if (_singletonInstance == null)
{
_singletonInstance = new MyServicesLibrary(serviceProvider);
_serviceProvider = serviceProvider;
}
}
和GetInstance
只返回构建的对象。
public static MyServicesLibrary GetInstance()
{
if (_singletonInstance == null)
{
throw new InvalidOperationException("BuildInstance method should be called first");
}
return _singletonInstance;
}
但问题是,当我第一次运行应用程序并在BuildInstance
上设置断点时,_singletonInstance
为空,然后它会创建实例。
然后我关闭应用程序并重新运行它。令人惊讶的是,此时_singletonInstance
不为空。我无法理解当我关闭应用程序时_singletonInstance是如何从内存中删除的。
请指点什么?