Autofac - 如何处理根生命周期?

Autofac - How to dispose the root lifetime?

我正在使用 Autofac 作为 windows 服务的 IoC 容器。

我有一个 class ConnectionManager 注册为单例(因此,绑定到 Autofac 的 root 生命周期范围)。

IoC 容器在服务的 OnStart() 方法中配置和初始化。常见的东西:

private IContainer _container;

public void OnStart()
{
    var builder = new ContainerBuilder();

    //initialize it...

    _container = builder.Build();
}

我想确保 ConnectionManager 的(单例)实例在服务停止时被处理 - 即当 OnStop() 方法被调用时。 我想告诉 Autofac 容器:"Nice meeting you. Now prepare to die."

我的问题是:我怎样才能在 OnStop() 方法中获得根生命周期范围以便我可以处理它?

答案就在眼前。

容器本身就是根生命周期范围。所以处理容器以处理单例...

public void OnStop()
{
    _container.Dispose();
}