如何使用autofac进行自定义初始化

2023-12-30

我将 autofac 添加到现有项目中,某些服务实现需要调用其 Initialize 方法并传递配置信息。目前我正在使用代码:

builder.Register(context =>
                 {
                    var service = 
                         new SqlTaxRateProvider(context.Resolve<IUserProvider>());
                    service.Initialize(config);
                    return service;
                 }
).As<ITaxService>()
.SingleInstance();

这是有效的,但我仍然自己创建对象,这就是我试图摆脱这个并允许 autofac 为我处理它的原因。是否可以配置执行自定义初始化的创建后操作?

为了让您了解我理想中的目标,这将是代码:

builder.RegisterType<SqlTaxRateProvider>()
 .As<ITaxService>()
 .OnCreated(service=> service.Initialize(config))
 .SingleInstance();

更新: 我正在使用 Autofac-2.1.10.754-NET35


.OnActivating(e => e.Instance.Initialize(...))

应该可以解决问题。

您还可以研究 Startable 模块(请参阅Autofac wiki 中的可启动条目 http://autofac.readthedocs.org/en/latest/lifetime/startup.html).

马克关于在构造函数中进行初始化的建议也是一个很好的建议。在这种情况下使用

.WithParameter(new NamedParameter("config", config))

将配置参数与其他构造函数依赖项合并。

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

如何使用autofac进行自定义初始化 的相关文章

随机推荐

  • 访问模块内的 IRQ 描述数组并显示操作名称

    我正在用 C 语言编写一个内核模块 该模块正在努力访问 IRQ 描述数组元素并显示这些元素的所有操作名称 一开始 我认为这个 irq desc 数组就像一个宏 但编译后我明白它不是 然后我使用了 for each irq desc irq
  • 安装 python 模块时出错

    我正在尝试使用标准安装 python 模块python setup py install但我收到以下错误 我对 python 相当陌生 但过去我已经能够以这种方式安装其他模块 我对这个模块的印象setuptools不是我应该从我的 pyth
  • 将初始查询集限制为 django-rest 框架中分页中的对象

    我正在定义一个ModelViewSet using django rest framework 我需要覆盖默认查询集 以便在渲染响应之前对查询集对象执行一些处理 这个过程非常耗时 因此我只想在由于分页响应而实际可供消费者使用的对象上执行它
  • oracle 18中通过json_table解析json

    有一个请求例如 with j sJson as select ID 1444284517 ID ORD 4255 2187606199 Vals CODE ONB2B3BB8 DORD 25 04 2021 from dual select
  • 如何在 RxSwift 中检测可观察对象在特定时间内是否未发出任何事件

    我正在尝试检测是否有可观察的 我的情况按钮 rx tap 在 3 秒内没有发出任何值 如果是的话 我想更新用户界面 到目前为止 这是我的尝试 Observable
  • Struts 2 - 了解 OGNL 和参数拦截器之间的工作原理

    我是 Struts 2 的新手 我正在从 Struts2 In Action 一书中学习它 我很难理解 OGNL 中的一些概念 如下所示 我们知道params拦截器将数据从请求参数移动到操作对象中ValueStack 现在 在阅读时 我看到
  • 检查 TreeView 中选中的节点数

    我是使用树视图的新手 我希望能够确保树视图只能检查一个子节点 如果有人尝试检查多个子节点 它会停止检查事件并取消选择所有父节点和子节点 我该怎么做呢 到目前为止 这就是我所得到的 但它表现得很奇怪 有什么建议么 Update 为了澄清一些事
  • AppleScript - 在 Firefox 上执行 JavaScript

    Safari 和 Chrome 可以通过 AppleScript 执行 JavaScript Safari tell application Safari open location http example com activate do
  • 我应该如何从字符串中删除所有前导空格? - 迅速

    我需要一种方法来删除字符串中的第一个字符 空格 我正在寻找一种方法 甚至是 String 类型的扩展 我可以用它来剪切字符串的字符 要删除前导和尾随空格 let trimmedString string stringByTrimmingCh
  • 如何在 matplotlib 中覆盖 shapefile

    In matplotlib how to overlay the shapefile available in folder as attached below at the top right position outside the p
  • 如何在 iOS 中创建具有动态 tableview 高度的动态 tableview 单元格

    我想根据内容增加表格视图单元格和表格视图高度 假设tableview包含2条记录 第一个单元格高度为100 第二个单元格高度为25 那么tableview高度应该是100 25 125 如何实现这个功能呢 提前致谢 你绝对可以做到这一点 首
  • 根据多列的最大值减少分组数据

    我有像这个例子这样的数据集 但每个输入有 1000 个输入和 1000 个单词 每个输入 x 时间 x 单词组合有 30 个值 在 Copy1 Copy30 列中 df read table header T sep text Input
  • 使用 Flask Web 应用程序监控实时数据流

    这是基于发布的答案https stackoverflow com a 13388915 819544 https stackoverflow com a 13388915 819544 我想监视数据流并将其推送到类似于上面答案的前端 但是一
  • hasattr 用于嵌套属性

    我需要这样的东西 伪代码 if hasattr object detail infotext 我的意思是我想检查对象是否有属性details如果有 那么如果details有一个名为infotext 我可以这样做 if hasattr obj
  • 如何使用 Python Amazon Simple Product API 获取产品价格

    我似乎无法得到this https github com yoavaviram python amazon simple product api图书馆工作 我得到了我的访问密钥 秘密和关联标签 我正在遵循与中所解释的完全相同的事情READM
  • SpringMVC HTTP 状态 405 - 不支持请求方法“POST”

    我有一个表单 我从该表单查询数据库 并将结果发布到另一个页面 然后 我从查询结果中选择一条记录 它会将我带回到我进行查询的页面 以便我可以更新记录 我单击更新 这将我带回到控制器并使用首先调用查询的相同方法 但是请求的参数现在是 更新 因此
  • 缓存特定的 Javascript 和 CSS 文件

    如何缓存一些特定的 JavaScript 和 CSS 文件 我从这个网站找到了建议 将其放入我的 htaccess file AddOutputFilter DEFLATE css js ExpiresActive On ExpiresBy
  • 为什么临时借用是合法的?

    来自 C 我很惊讶这段代码在 Rust 中是有效的 let x mut String new x push str Hello 在 C 中 您无法获取临时值的地址 并且临时值的寿命不会比它出现的表达式的寿命长 临时在 Rust 中存在多久
  • NSDictionary allKeys - 它总是返回相同的顺序吗?

    我对 Objective C 相当陌生 今天我正在使用 NSDictionaries 并遇到了 allKeys 方法 据我了解 它返回一个 NSArray 其中包含随机顺序的字典键 然而 这个顺序总是一样的吗 即 如果我连续对同一字典调用
  • 如何使用autofac进行自定义初始化

    我将 autofac 添加到现有项目中 某些服务实现需要调用其 Initialize 方法并传递配置信息 目前我正在使用代码 builder Register context gt var service new SqlTaxRatePro