Autofac外部拥有的容器?

时间:2017-07-03 03:51:19

标签: autofac

我在应用程序的整个生命周期中使用Autofac容器,但我想自己处理这些组件。

IE如果我有builder.RegisterType<SomeType>(),我不希望容器保留SomeType的引用,即使没有在其他任何地方引用它们也会保持这些引用(如果使用RegisterInstance OTOH当然,容器必须保留对单例的引用。

我可以看到我可以builder.RegisterType<SomeType>().ExternallyOwned()解决我的一种类型的问题,但我不想为每种类型编写它,更重要的是我也使用builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());我可以选择使用ExternallyOwned

有没有办法为整个容器指定“ExternallyOwned”?或者,换句话说,告诉容器禁用整个dispose功能而不保留对它不需要的对象的引用?

1 个答案:

答案 0 :(得分:1)

没有办法禁用容器处理服务。您可能会尝试使用something like the logging module,但我可以看到不能100%工作,并且缺少边缘情况,您不小心。

自动跟踪和处理是一种非常常见的容器功能。我建议你不要反对它,而是重构你的代码来接受它。它会让生活变得更轻松。