使用 Autofac 进行运行时注册

2023-12-24

在与同事讨论 Autofac 时,出现了依赖项的运行时注册问题。例如,在 Prism 中,程序集经常在运行时加载,并且它们的依赖项在 IoC 容器(通常是 Unity)中注册。

Autofac 如何实现这一点?

从 Autofac 的文档和我在网上找到的内容来看,注册似乎是在应用程序启动时执行的。即使使用“外部”程序集,注册也位于应用程序启动时程序集所在的模块中。在应用程序启动时“构建”容器后,我们如何执行此操作?

(请注意,程序集可能想要添加依赖项以供应用程序中其他组件的使用,因此嵌套容器可能无法解决此处的问题。与此主题相关:Unity 有 RegisterIfExists 等方法。是否有 Autofac等价物?)

Thanks!


更新现有 Autofac 容器:您可以更新现有的 AutofacContainer在运行时通过使用ContainerBuilder.Update()。以下代码示例取自博客文章Autofac 2.2 发布 http://nblumhardt.com/2010/05/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 集成: 问题Autofac 中 Prism 集成的状态如何? https://stackoverflow.com/questions/5709498/whats-the-status-of-prism-integration-in-autofac可能对你也有用。

2021 年 7 月更新- Autofac 删除了 Update 方法(不是最近,但我刚刚注意到)。请参阅 github 上的此问题,了解无需更新即可完成所需操作的“更好”方法。https://github.com/autofac/Autofac/issues/811 https://github.com/autofac/Autofac/issues/811

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Autofac 进行运行时注册 的相关文章

  • 从 IntelliJ Ultimate 外部运行时,Tomcat 的“服务器日志”在哪里?

    当运行我的Vaadin https en wikipedia org wiki Vaadin app on Tomcat https en wikipedia org wiki Apache Tomcat8 5 外部来自IntelliJ h
  • 如何从java/或命令行使用/m“宏参数”打开word文档而不指定winword.exe路径

    我想做接下来的事情 String cmd cmd c c Program Files x86 Microsoft Office Office12 WINWORD exe mOpenPage c Navodilo doc Process pr
  • 流畅的界面是否会显着影响 .NET 应用程序的运行时性能?

    我目前正忙于为现有技术实现一个流畅的接口 这将允许类似于以下代码片段的代码 using var directory Open Directory path to some directory using var file Open File
  • 如何获取变量的内存大小?

    有谁知道如何获取变量的内存大小 int string struct等 并打印它 是否可以 var i int 1 I want to get something like this fmt Println Size of i is i Al
  • Autofac:解决对命名实例的特定依赖关系

    使用 Autofac 我想注册一个组件并指定要解析为命名实例的特定依赖项 我使用构造函数注入找到了如下示例 这几乎就是我想要的 builder Register c gt new ObjectContainer ConnectionStri
  • WPF Prism - 管理应用程序中的模块

    将 Prism 与 WPF 结合使用 我希望允许用户从存储库中选择他们想要使用的模块 每个模块本质上都是一个附加组件 选择要使用的模块只需将其移动到 DLL 的 模块 文件夹中即可加载 但是 在应用程序运行时尝试移动 DLL 时 会引发错误
  • 如何在Java程序中检索环境变量的修改值(外部修改的)?

    是否可以在 Java 程序中检索环境变量的修改值 我尝试使用System getenv 但新的值并没有体现在程序中 场景是这样的 该程序检索环境变量的值 当程序仍在运行时 该变量的值可以从外部更改 甚至可以是手动过程 例如在 Windows
  • 如何自动创建 WPF Viewmodel 属性

    我在 WPF 项目中使用 Visual Studio 17 和 Resharper 该项目向用户显示大量信息 因此我有很多如下所示的属性 private double foo public double Foo get return foo
  • 关于 MEF 战略和结构的问题

    我的任务是模块化一个 C 应用程序 该应用程序是一个非常大的 Delphi 应用程序的重写 数据库有 249 个表 业务限制禁止对 NET 进行彻底的重新设计和更好的整体架构 因此我们基本上只是用 C 逐步重写 Delphi 应用程序的模块
  • Prism 6 与旧版本的兼容性

    我有一个使用 Prism 5 WPF 的主项目的解决方案 该解决方案还包含更多属于 Prism 模块的项目 现在我必须创建一个新模块 我想知道我是否只能在该模块中使用 Prism 6 并且它将与 Prism 5 主项目兼容 或者我是否需要在
  • 如何在动态创建的一组 editText 上设置 onFocusChangeListener()?

    我有这段代码 每次前一个 lineaLayout 的 edittext 失去焦点时 我都会膨胀一个包含 3 个 editText 的 LinearLayout 我只想在最近创建的 editTexts 上使用 onFocusChangeLis
  • 仅为一个通用命令处理程序注册 Autofac 装饰器

    我们有很多通用命令处理程序 它们由 Autofac 以开放通用方式注册 我们有几个装饰器来装饰所有的手柄 现在我需要仅为一个命令处理程序注册一个装饰器 而不影响所有其他命令处理程序 这是我的尝试 但我似乎没有正确注册 这是与我们的代码类似的
  • Prism自定义确认交互

    我使用 Prism Unity WPF 和 Mvvm 在应用程序中创建了一个自定义确认窗口 我需要有关需要发送回视图模型的通知的帮助 我在详细记录视图中有这个 我们称之为 MyDetailView
  • wpf 的 prism 与 mvvm light

    我们正在启动一个带有 MVVM 的 WPF 项目 并且必须决定使用 PRISM 还是 MVVM Light 我对这两个框架都是新手 我已经阅读了一些帖子 但仍然有一些问题 有人可以阐明以下几个方面吗 两个框架 性能 无论出于何种原因 其中一
  • GOMAXPROCS 默认值是多少?

    不设置同名环境变量时是否保证GOMAXPROCS设置为1 此代码显示的值 package main import runtime fmt func getGOMAXPROCS int return runtime GOMAXPROCS 0
  • 我可以在 Orchard CMS 中使用我的 Ninject .NET 项目吗?

    我正在使用 Orchard CMS 创建一个网站 并且有一个用 Ninject 编写的外部 NET 项目 用于依赖注入 我想将其与 Orchard CMS 中的模块一起使用 我知道 Orchard 使用 Autofac 进行依赖注入 这给我
  • 在 Composite WPF (Prism) 中,我应该如何对我的控制器进行单元测试?

    我正在使用一个模块构建一个基本的复合 WPF Shell 我想对我的模块进行单元测试 显然 Composite WPF 以一种易于单元测试的方式模块化我的代码 下面是我想要进行单元测试的代码 它驻留在我的模块的控制器中 请注意标准复合 WP
  • WPF PRISM 事件订阅不会消亡

    我有一个 PRISM RegionManager 其中有几个区域 顶部的功能区区域和其下方用于我的视图的主要内容区域 相当基本 该应用程序以主要内容区域中的 主页 视图开始 当我单击功能区上的按钮时 我将第二个视图注入内容区域并在区域管理器
  • 从 Autofac 容器解析通用接口的 IEnumerable

    我不确定这是否可能 我见过其他一些帖子提出类似的问题 但没有一个得到满意的答案 我想要做的是解析 Autofac 中具有不同泛型类型的接口集合 所以类的构造函数看起来像这样 public class SomeClass
  • 如何使用 Autofac 为 MVC 3 进行动作注入?

    我正在创建一个 ASP NET MVC 3 应用程序 尝试利用控制器操作注入 如上所述here http alexmg com post 2010 05 16 Introducing Action Injection with Autofa

随机推荐

  • 在 Phonegap/Cordova 3.0+ 中,更改后是否有办法刷新插件?

    抱歉 如果这是一个简单的问题 我希望这是一个简单的问题 PhoneGap Cordova 文档非常糟糕 目录结构如下 platforms ios android plugins www 无论如何 是否可以在父插件目录中进行更改 然后将这些更
  • ASP.NET FileUpload - 如何更改“浏览...”按钮描述的语言?

    我知道这里已经发布了非常相似的问题 如何更改 FileUpload 控件 System Web UI WebControls 中浏览按钮的文本 https stackoverflow com questions 94316 how to c
  • 检查控制器所有操作的会话

    我有一个简单的 MVC 应用程序 我想首先检查此操作的会话 public ActionResult Index if Session UserInfo null return RedirectToAction Login Users ret
  • 生成访问令牌 Instagram API,无需登录?

    因此 我正在构建一个餐厅应用程序 我想要的功能之一是允许该应用程序的用户查看特定餐厅 Instagram 帐户中的照片 我希望用户无需登录 Instagram 帐户即可看到此内容 因此他们甚至不需要 Instagram 帐户即可实现此功能
  • 将 iOS 崩溃转储中的偏移量与反汇编的二进制文件相匹配

    我无法将 iOS 崩溃转储的堆栈跟踪中的偏移量与 otool 输出的二进制文件反汇编中的偏移量进行匹配 任何人都可以确认我原则上如何匹配这些 例如 如果我在故障转储中得到一行 0 myapp 0x00005b0a 0x1000 19210
  • fcntl(), F_GETFD 在 UNIX 中的含义

    unix 中 fcntl 函数中 F GETFD 的含义是什么 据我了解 如果指定位置没有文件描述符 它应该返回 1 如果这是真的 那么什么时候会发生 当接近该位置的文件描述符时 F GETFD 也不返回 1 这是使用 F GETFD 的程
  • window.onload 中调用的函数无法识别元素

    我在这里有点困惑 我认为指定的函数window onload在页面加载之前没有执行 尽管如此 我在下面的代码中遇到了错误 这是jsfiddle版本 http jsfiddle net Claudius raktx img alt src h
  • 在c++中获取动态库目录(linux)

    是否有任何编程方式来获取程序加载的动态库的位置 我知道可以获得 可执行 运行路径 但这对我来说还不够 我正在开发一个具有一些依赖项的外部库 我需要相应地指向它的位置 例如 程序运行在 local deepLearning bin 该程序使用
  • 同步计时器以防止重叠

    我正在编写一个 Windows 服务 它定期运行可变长度的活动 数据库扫描和更新 我需要经常运行此任务 但要处理的代码不能安全地同时运行多次 如何最简单地设置一个计时器 每 30 秒运行一次任务 同时不重叠执行 我假设System Thre
  • 带有自定义视图控制器的 iOS 共享扩展

    我正在创建一个共享扩展 以允许将 Youtube 视频共享到我的应用程序中 但很难顺利地呈现我的自定义 UI 我不想使用仅包含原始 Youtube URL 的默认视图控制器 而是想做一些视觉上类似于 Facebook 扩展的操作 显示缩略图
  • 实体框架 - 在多对多关系中两次添加相同的实体

    好的 所以这里是交易 我有两个实体 产品 和 零件 产品由零件组成 而且零件可以在其他产品中重复使用 这些实体之间的关系是多对多的 这一切都很好 问题是我不能将同一部件两次添加到同一产品中 EF 似乎强制所有相关实体都是唯一的 考虑以下代码
  • 当滚动样式设置为日期时,log4net 有时不会滚动日志文件

    我有一个 Windows C 应用程序 它使用 log4net 进行日志记录 这是记录器的配置方式
  • Java Struts 1:从一个动作前进到另一个动作。通过 ActionForm 传递数据

    我们一直在尝试从一个操作重定向到另一个操作 希望数据能够在相应的操作之间传递ActionForm豆子 第一个操作接收来自浏览器的请求 打印数据字段 并将其转发到另一个操作 该操作打印相同的字段并重定向到 JSP 问题是ActionTo正在打
  • 调用 initWithNibName 不会初始化笔尖中的项目,它有 0x0

    当我打电话时 self viewController DidItViewController alloc initWithNibName DidItViewController bundle nil 然后我在调试器中执行此行后立即检查 se
  • 动态规划 - 斐波那契

    基本上 我是一名学习程序员 这周向我介绍了动态编程 我们的任务是使用动态规划找到斐波那契数列 提供的伪代码显然位于函数中 init table to 0s if n 1 return n else if table n 1 0 table
  • 将值添加到闪亮的反应表中

    我希望我的闪亮应用程序的用户能够迭代地将元素添加到表中 但我无法弄清楚如何保存这些值 在此示例中 我希望用户能够在文本框中添加值 这些值应添加到主面板中表格的底部 此时先前添加的值将丢失 library shiny runApp list
  • 从 GCloud 激活服务帐户

    我正在尝试配置一个Google Cloud Storage 存储桶对象更改的通知 https developers google com storage docs object change notification Authorizati
  • 在phonegap上播放youtube视频

    我正在使用phonegap开发一个应用程序 其中视频部分显示使用youtube jsonc api检索的youtube视频列表 我希望单击链接时在应用程序内播放视频 以便在关闭视频时再次显示我的应用程序界面 YouTube api 提供了视
  • Scala 中的函数式编程练习 6.11。这个 for-comparion 是如何工作的?

    代码在这里 https github com fpinscala fpinscala blob master answers src main scala fpinscala state State scala https github c
  • 使用 Autofac 进行运行时注册

    在与同事讨论 Autofac 时 出现了依赖项的运行时注册问题 例如 在 Prism 中 程序集经常在运行时加载 并且它们的依赖项在 IoC 容器 通常是 Unity 中注册 Autofac 如何实现这一点 从 Autofac 的文档和我在