使用Autofac进行运行时注册

| 在与同事讨论Autofac时,出现了依赖项的运行时注册问题。例如,在Prism中,程序集经常在运行时加载,并且其依赖项已向IoC容器(通常是Unity)注册。 Autofac如何做到这一点? 根据Autofac的文档以及我在网上发现的内容,似乎注册是在应用程序启动时执行的。即使使用“外部”程序集,注册也会在应用程序启动时与程序集一起位于模块中。在应用启动时“内置”容器后,我们该怎么做? (请注意,程序集可能希望添加依赖项以供应用程序中其他组件的使用,因此嵌套容器可能无法在此处解决问题。与该主题相关:Unity具有诸如RegisterIfExists之类的方法。是否有Autofac等价物?) 谢谢!     
已邀请:
        更新现有的Autofac容器:您可以在运行时使用
ContainerBuilder.Update()
更新现有的Autofac
Container
。从博客文章Autofac 2.2 Released中获得的以下代码示例演示了用法:
var container = // something already built

var updater = new ContainerBuilder();
updater.RegisterType<A>();
updater.Register(c => new B()).As<IB>();

// Add the registrations to the container
updater.Update(container);
Autofac和Prism集成:问题Prism集成在Autofac中的地位如何?可能对您也有用。     
        Autofac 4.8.1.0更新
ContainerBuilder.Update
方法标记为
Obsolete
,并带有注释: 通常应将容器视为不可变的。在构建/解决之前,注册所有依赖项。如果需要更改容器的内容,则从技术上讲,应重建容器。将来的主要版本中可能会删除此方法。     

要回复问题请先登录注册