Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET核心中自动配置服务?_C#_Asp.net_Asp.net Core_Dependency Injection_Scrutor - Fatal编程技术网

C# 如何在ASP.NET核心中自动配置服务?

C# 如何在ASP.NET核心中自动配置服务?,c#,asp.net,asp.net-core,dependency-injection,scrutor,C#,Asp.net,Asp.net Core,Dependency Injection,Scrutor,我想更改我的启动类,以扫描系统中实现接口的所有类,然后自动注册它们。我使用Scrutor只是为了让生活更轻松 通常情况下,使用类似以下代码很容易实现: services.Scan(扫描=>Scan .FromAssemblyOf() .AddClasses() .AsImplementedInterfaces() .WithTransientLifetime()); 我的问题是,我不能用选项模式来实现这一点 在我的创业公司里,我通常会有这样的东西: services.Configure( op

我想更改我的启动类,以扫描系统中实现接口的所有类,然后自动注册它们。我使用Scrutor只是为了让生活更轻松

通常情况下,使用类似以下代码很容易实现:

services.Scan(扫描=>Scan
.FromAssemblyOf()
.AddClasses()
.AsImplementedInterfaces()
.WithTransientLifetime());
我的问题是,我不能用选项模式来实现这一点

在我的创业公司里,我通常会有这样的东西:

services.Configure(
options=>_config.GetSection(nameof(GatewaySettings)).Bind(options));
这允许我将类注入构造函数,如下所示:

public某物(IOptions myOptions)
{
使用(myOptions.Value);
}
是否有一种方法(使用Scrutor会很好,但我愿意接受其他建议)来注册我的所有选项类。我可以在代码库中通过命名约定或用空接口装饰它们来轻松识别它们。我的问题是,我不知道如何使用扫描的类调用“services.Configure()”

我正在有效地寻找实现这一目标的方法:

services.Configure(,myScannedType,
options=>_config.GetSection(myScannedType.GetName()).Bind(options));
您可以使用库自动注册所有应用程序设置

用法:

[选项(“网关设置”)]
公共类网关设置
{
//你的财产
}
注册服务

public void配置服务(IServiceCollection服务)
{
services.AddReguto();
services.ConfigureReguto(配置);
}

您必须通过迭代
servicecolection
、检查所有注册的构造函数和所需的
Configure
调用自己来实现这一点。ASP.NET Core和Scrutor中都没有OOTB可以帮助您实现这一点。谢谢Farhad。这个很好用。这也是一个很好的例子,说明如何自己做到这一点。代码实际上并不那么复杂。