问题标签 [autofac-configuration]

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 投票
0 回答
529 浏览

c# - Autofac注册具体类

我在使用 Autofac 注册具体类时收到以下错误

这是课

这就是我使用 autofac 进行注册的方式

将上述类称为

PageCachingJob 类 -

BaseJob 类

界面 -

ICachingService 接口

缓存服务类

获取以下异常

在“PacDig.Atlantic.Schedule.Jobs.NoRetryJob`1[PacDig.Atlantic.Schedule.Jobs.PageCachingJob]”类型上使用“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”找到的任何构造函数都不能使用可用服务调用和参数:无法解析构造函数“Void .ctor(PacDig.Atlantic.Schedule.Jobs.PageCachingJob)”的参数“PacDig.Atlantic.Schedule.Jobs.PageCachingJob 作业”。

提前致谢

0 投票
1 回答
150 浏览

autofac - Autofac的JSON配置中同一个接口的两种实现

我需要在应用程序中启用后期绑定,并且我希望有一个选项来使用 JSON 配置文件显式配置服务。

我有一个接口IDependency和两个类DependencyOneDependencyTwo它们都实现了接口。我还有一个SomeService具有以下签名的构造函数的类:

我想注入DependencyOnefordependency1DependencyTwofor dependency2

如何在不使用代码中的任何属性的情况下纯粹在 JSON 配置中进行配置?有可能吗?

需要无属性要求,因为后期绑定程序集不应该依赖于 AutoFac。

提前致谢。

更新:解决方案

Travis 在下面的回答包含指向常见问题解答的链接,这使我找到了可接受的解决方案。使用“标记”接口,例如IDependencyOne : IDependencyand IDependencyTwo : IDependency,然后SomeService(IDependencyOne dependency1, IDependencyTwo dependency2)。我不太喜欢的事情是,现在一个通用的装饰器IDependency需要实现所有标记,比如LoggingDecorator : IDependencyOne, IDependencyTwo我想在 中使用它SomeService,但只要标记保持为空,这不是一个大问题。这样我就不必在后期绑定的程序集中强制依赖 Autofac 的 dll,同时仍然在 JSON 文件中配置 DI。

0 投票
1 回答
86 浏览

c# - 如何定义解析 json/xml 配置时使用的默认 Autofac 语言环境

我正在尝试使用 xml 配置来配置 autofac,但遇到了语言环境问题。我尝试注册的组件之一需要参数,该参数在我的本地系统上具有格式 xxx,yyy - 使用逗号作为小数分隔符。我必须使用的另一个系统使用作为小数分隔符。有没有办法强制 autofac 忽略语言环境设置,只解析带点作为小数点分隔符的数字?

这个配置

投掷

如果我使用逗号注册在我的设备上有效,但在其他设备上无效。

我可以通过在注册和容器构建期间设置CurrentThread.CurrentCulture来克服这个问题,但这对我来说似乎不是一个正确的解决方案。

0 投票
1 回答
148 浏览

azure - 使用 Autofac 在项目中设置 AAD 身份验证

我有一个具有 AAD 身份验证的 Web API(在代码中,因为它在 IaaS 而不是 PaaS 中运行)它运行良好,但是如果我将 Autofac 配置添加到 Startup.cs,身份验证中断,(如果我在 Auth 初始化 Autofac 中断之后放置 Autofac ) 这让我认为配置正在相互覆盖。

我试图找到有关如何将它们一起使用的任何文档,但我找不到任何信息。一个使用 HttpConfiguration,另一个使用 IAppBuilder,我不知道如何将它们组合在一起以使它们一起工作。

这是我的身份验证代码:

这是Autofac代码

一起使用这两个工具的最佳实践是什么?

0 投票
1 回答
314 浏览

dependency-injection - 在 Autofac 中共享依赖实例的正确方法是什么?

我有三个类,比如说,ABC所以:

  • A取决于 和 的B实例C
  • B取决于 ; 的一个C实例
  • 两者都A需要B共享C.

如何配置容器以通过一次调用正确连接事物Resolve<A>()

0 投票
1 回答
8884 浏览

c# - 在 ASP.NET Core 3.0 Preview 5 或更高版本中配置 AutoFac

按照 AutoFac 文档,我能够在 ASP.NET Core 3.0 Preview 3 中使用 AutoFac。ASP.NET Core 3.0 Preview 4 和 ASP.NET Core 3.0 Preview 5 引入了重大更改,AutoFac 不再有效。我的控制器方法返回运行时错误。

我的代码中 ASP.NET Core 3.0 Preview 3 和 ASP.NET Core 3.0 Preview 5 的区别如下:

IWebHostBuilder -> IHostBuilder

CreateWebHostBuilder -> CreateHostBuilder

WebHost.CreateDefaultBuilder(args) -> Host.CreateDefaultBuilder(args)

程序.cs

启动.cs

应用程序模块.cs

0 投票
2 回答
52 浏览

c# - 减少不断增加的构造函数服务参数

我对使用 Autofac 还是很陌生,并且对我正在使用的构造函数注入方法感到困扰。这是场景:

我目前有两个继承IForms接口的类。每个类也有自己的接口

现在我有一个处理这个的类,如下所示:

现在有可能还会有 2 种形式出现(例如FormC, FormD, FormE)。这里会发生的是构造函数中多了 3 个构造函数参数ApplicationForms

有没有一种方法可以将所有构造函数参数组合成一个参数?我可以看到它最终肯定会看起来很丑。

0 投票
1 回答
33 浏览

c# - Web api控制器中的注入不使用单实例

我有一个在我的容器中注册为单个实例的服务

容器创建如下

这一切都在正常代码中完美运行 - 我可以注入我的服务并按照我的预期解决它

但是,当我尝试将我的服务注入 web api 控制器时,该服务再次被解析,但 Autofac 给了我一个新的服务实例

如何防止这种行为,以便注入最初创建的实例?

0 投票
1 回答
232 浏览

c# - Autofac RegisterAssemblyTypes 在构造函数参数中注入 Null

班上

Autofac 配置

让我们忽略存储库不应该向客户发送电子邮件。不是我的代码。它正在重构。

如果我使用 foreach 循环注册程序集类型,则在创建 CustomerRepository 时,电子邮件管理器始终为空。

如果我删除循环以注册程序集类型,则会使用有效的电子邮件管理器创建 CustomerRepository。

为什么调用 RegisterAssemblyTypes 会阻止创建电子邮件管理器?

我尝试过的事情,

  1. 首先注册程序集类型。然后是个别类型。
  2. 从 RegisterAssemblyTypes 查询中删除 except 子句。
  3. 在没有 SingleInstance 约束的情况下注册 EmailManager。
0 投票
1 回答
191 浏览

c# - Autofac 注册所有名为 IFoo.Name 的 IFoo 类型

刚刚学习 Autofac 并努力按照惯例注册一些命名实例。

看着这个界面,我想要完成的是这些方面的事情

我已经尝试了一些变化来达到这种效果。最终目标是动态注册和解析实例。