gpt4 book ai didi

c# - 使用可选参数对象注册 autofac 组件

转载 作者:行者123 更新时间:2023-11-30 23:23:47 25 4
gpt4 key购买 nike

我想在构造函数中注册一个带有可选参数的组件。我看到了passing optional parameter to autofac看起来不错,但不确定如何使用 xml 配置实现它。

假设这是我的代码:

public Service(IRepo repo, IEnumerable<IServiceVisitor> serviceVisitors = null)
{
this._repo= repo;
_serviceVisitors= serviceVisitors;
}

我想注入(inject)复杂类型 IServiceVisitor

最佳答案

为了注入(inject)IServiceVisitor进入Service你只需要注册他们。

<configuration>
<autofac defaultAssembly="App">
<components>
<component type="App.Service"
service="App.IService" />
<component type="App.ServiceVisitor1"
service="App.IServiceVisitor" />
<component type="App.ServiceVisitor2"
service="App.IServiceVisitor" />
</components>
</autofac>
</configuration>

在这种情况下,您不需要指定默认值 IEnumerable<IServiceVisitor> . Autofac 如果没有 IServiceVisitor 将自动生成一个空数组已登记。

public Service(IRepo repo, IEnumerable<IServiceVisitor> serviceVisitors)
{ /* ... */ }

如果您不需要 IEnumerable<IServiceVisitor>但需要一个可选的 IServiceVisitor您只需在构造函数中使用 = null 将其声明为可选

public Service(IRepo repo, IServiceVisitor serviceVisitor = null)
{ /* ... */ }

关于c# - 使用可选参数对象注册 autofac 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38170202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com