问题标签 [autofac-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7507 浏览

dependency-injection - Net Core:从 Autofac 模块访问 appsettings.json 值

AspNet 核心应用

1)这样的Autofac模块

2) step№1中的模块注册到Startup.cs

如何从 中访问appsettings.jsonAutofacModule?我需要它来在内部创建我的对象AutofacModule并将其用于 DI。

0 投票
0 回答
290 浏览

autofac - Autofac - 使用对象配置模块列表属性

我想为每个 XML 配置一个具有属性的模块,其中包含 MyObject 类的列表。我的 Module 和 MyObject 类看起来像:

我的假设是在 XML 中像这样配置它:

但是如果我运行它,我会得到以下异常:

我正在使用 Autofac 4.5.0 和 Autofac.Configuration 4.0.1。

我究竟做错了什么?有没有办法让它工作?

0 投票
1 回答
1805 浏览

c# - ConfigurationModule 传递到 Module 和 context - DotNet Core

所以我正在尝试使用 Autofac DI 通过堆栈传递我的配置 json 文件。我的主要功能如下:

我已经在这里成功注册了模块......接下来我的 BusModule 被加载......

然后解决了我的 BusSettings 类,但这是我希望使用配置文件设置属性的地方,问题是我不知道如何从那里访问配置文件...

有谁知道这样做的正确方法?

0 投票
1 回答
1493 浏览

autofac - 从 autofac 中的 web.config 读取模块以根据解决方案配置更改容器配置

我已经创建了一些 Autofac 模块......现在我想使用 web.config 在我的容器中注册其中一些......在我的 web.config 中,我写了:

现在我必须构建我的容器。但是我不清楚autofac文档。我不明白我必须做什么才能阅读我的模块和构建容器。

我正在使用最新版本的 Autofac,所以我没有ConfigurationSettingsReader可用的课程。

任何人都可以帮助我吗?

编辑

我在 web.config 上发现了有趣的保存配置,因为这样我可以根据我的解决方案配置“更改”web.config(你知道,经典的 web.debug.config、web.release.config 等)......

这可以帮助我注册正确的模块,避免使用指令(#if bla bla bla,...)或简单的条件...

我已经在使用模块,但我认为正确的解决方案不是在模块内添加一个属性来根据我要部署项目的选定环境选择要解析的组件。我只是想到这个解决方案阅读这个例子(顺便说一句,Flexibility to Override还是指ConfigurationSettingsReader. 可以吗?)

0 投票
0 回答
1728 浏览

c# - 使用 .Net Core Libraries 和 Autofac 实现插件系统

几个月前,我在 ASP.Net Core 1.1 中使用 autofac 模块构建了一个非常简单但仍然有效的插件系统,就像这样

在启动.cs

然后在 AutofacModule.cs

然后我可以从这样的程序集中加载模块:

我必须将程序集复制到正在运行的 Web 应用程序 bin 目录才能工作,或者引用主 Web 项目中的所有程序集。所有程序集都是 .Net Framework 类库。过了一会儿,我将整个解决方案更新为 Asp.Net Core 2.0,并且包含程序集的 Autofac 模块更改为 .Net Core 类库。现在,仍然可以找到 autofac 模块,并通过 RegisterAssemblyModules 进行注册,但不再调用 load 方法。我意识到,如果我使用 autofac 模块创建另一个 .Net Framework Library 项目并引用它,它仍然会按预期加载,并调用加载方法。所以在我看来,这个问题与.Net Core Libraries 有关。

任何人都可以向我解释这一点,知道任何解决方案,解决方法,还是可以推荐另一种带有 autofac 的插件系统架构?

0 投票
1 回答
1924 浏览

c# - 多项目解决方案中的 Autofac

我在跨多个类库和多个可执行文件的 C# 解决方案中使用 Autofac 作为依赖注入系统。我正在使用模块来配置 Autofac,但这仍然给我留下了构建 DI 容器的问题,这取决于我为哪个可执行文件编写它。

我尝试使用 Autofac 的 RegisterAssemblyModules,但您必须为其提供要扫描的程序集列表,并且在使用类库程序集中的某些类型之前,不会加载程序集,因此无法扫描。

有些人建议加载 bin 目录中可能包含 Autofac 模块定义的每个程序集。但这似乎带来了一个不受欢迎的大会陷入行动的风险。

所以我想出的是这个静态类,它定义在一个通用的类库中:

您可以通过在应用程序的启动代码中包含这样的行来使用它:

这是一个合理的解决方案吗?如果有更好,更灵活的,我会有兴趣了解它。

IOptions<>绑定系统问题

在执行@Nightowl888 的建议时,我遇到了Microsoft 配置IOptions<>系统的问题。这是我尝试配置 Autofac 以解析 AppConfiguration 对象的方式:

问题出现在对 Bind() 的调用中。当它遍历和解析配置信息时,它期望通过无参数构造函数创建各种对象......这使得使用构造函数注入变得困难。

如果我不能使用构造函数注入,我需要能够在构造函数代码中解析 DI 容器。我看不到如何定义一个不在特定 DI 容器的解析语义中硬连线的库程序集。

想法?除了我考虑过的“放弃IOptions<>系统”之外,它还提供了许多我想保持的好处。

0 投票
0 回答
1289 浏览

asp.net-web-api - Autofac RegisterAssemblyModules 抛出 Autofac.Core.DependencyResolutionException

我有一个使用 Autofac 的 WebAPI 2。下面的作品,但RegisterAssemblyModules抛出DependencyResolutionException

网络API 2

基础设施引导程序

更新如下:
LoggingBootstrapper

所有项目都在下面使用。

信息:.net 4.5.2、WebAPI 2、Owin 托管和通过 Topshelf 提供的 Windows 服务。

客户 api 控制器使用承包商依赖注入。注入尚未解决依赖关系,因此出现以下异常:

0 投票
0 回答
211 浏览

autofac - webapi中的autofac注册一些单例组件每个请求一些

我们的框架结构如下:

  • webapi 项目
  • 基本 CQRS 项目
  • Nhibnerate 配置项目

该解决方案使用 Autofac 连接所有类。该 api 将加载所有程序集并在这些程序集中注册所有模块。

大多数模块只是查找所有接口和实现,并且效果很好,每个请求都使用实例。

CQRS 是命令和查询处理程序的一个非常基本的示例。由于将来会有很多并且它们可能具有各种依赖项,我不想手动编写工厂来获取所有处理程序(或在 API 中添加对每个处理程序的引用)。

为了解决上述问题,我有一个命令/查询处理程序工厂,它接受它想要运行的命令或查询。使用反射它找到它的处理程序类型并使用基本 handlerResolver 以便它可以获得处理程序的新实例。为此,我将传递ILifetimeScope给解析器,因此它只在一个地方完成。(我知道引用生命周期范围通常是一种反模式,但我的感觉是,如果我最终得到数百个命令和查询,我最终会得到一个可怕的工厂,它需要所有可能的依赖项,并使用 autofac把它连起来更干净)。

如果每个请求都将所有内容都保留为实例,那么这一切都可以正常工作,则所有类都已解析并且命令和查询将运行。问题是对于每个 API 请求,NHibnernate 配置都会重建,这在我的机器上大约需要 1.5 秒。这意味着几乎每个请求都需要 2 秒才能响应。

我想做的是能够将 NHibnerate 配置和 sessionFactory 注册为单例(因为它不会有任何敏感/用户数据相关信息),以便尽可能少地创建它。还要根据要求保留所有处理程序和其他类,以便它们独立并尽快处理。

连接 web api 的主类:

模块类之一的示例:

0 投票
0 回答
353 浏览

autofac - Autofac 的多个容器替代方案

我有一个包(它的名字是 Tree),Tree 包含 10 个内部服务(接口),它们由 Autofac 解析。树包含 2 个外部服务:

  • 树命令

  • 树查询

我想在我的应用程序中使用多个树。

  • 学生树

  • 教师树

  • 公司树等

每个实现可以使用不同的组件注册(用于子服务)

Autofac如何实现这种要求?

如果没有多个容器,我的解决方案看起来有点奇怪:

样品注册:(是原版的简化版)

样品解析:

对于这种要求,Autofac 的最佳实践是什么?

0 投票
1 回答
1438 浏览

c# - 使用 Autofac 注入 JSON 文件

我需要使用 Autofac (IoC) 加载 JSON 文件,并且我正在关注官方教程:http ://autofaccn.readthedocs.io/en/latest/configuration/xml.html#quick-start

所有代码都正确,但无法识别 ConfigurationModule 类: