Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.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核心-DI-使用操作<;T>;或眼压<;T>;_C#_Asp.net Core_Dependency Injection_Extension Methods_Asp.net Core 2.0 - Fatal编程技术网

C# ASP.NET核心-DI-使用操作<;T>;或眼压<;T>;

C# ASP.NET核心-DI-使用操作<;T>;或眼压<;T>;,c#,asp.net-core,dependency-injection,extension-methods,asp.net-core-2.0,C#,Asp.net Core,Dependency Injection,Extension Methods,Asp.net Core 2.0,我试图理解使用IOptions和Action之间的区别,以及何时使用什么 我有一个库,它使用扩展方法进行IServiceCollection,在这里我需要配置我的服务以及配置EFDbContext 示例: namespace Microsoft.Extensions.DependencyInjection { public static void AddModule(this IServiceCollection services, IOptions<SomeOptionsCla

我试图理解使用
IOptions
Action
之间的区别,以及何时使用什么

我有一个库,它使用扩展方法进行
IServiceCollection
,在这里我需要配置我的服务以及配置EF
DbContext

示例:

namespace Microsoft.Extensions.DependencyInjection 
{
    public static void AddModule(this IServiceCollection services, IOptions<SomeOptionsClass> options) {
        services.AddDbContext<MyContext>(contextOptions => contextOptions.UseSqlServer(SomeOptionsClass.ConnectionString));
    }
}
名称空间Microsoft.Extensions.DependencyInjection
{
公共静态void AddModule(此IServiceCollection服务、IOOptions选项){
services.AddDbContext(contextOptions=>contextOptions.UseSqlServer(someoptionClass.ConnectionString));
}
}

如何从
someoptionClass
中获取
ConnectionString
属性值?

我不知道为什么这里需要
IOptions

应该能够在启动期间从配置(appsetting)获取连接字符串
IOptions
通常用于将设置注入类中

我建议简化API以期望连接字符串

namespace Microsoft.Extensions.DependencyInjection  {
    public static void AddModule(this IServiceCollection services, string connectionString) {
        services.AddDbContext<MyContext>(contextOptions => contextOptions.UseSqlServer(connectionString));
    }
}

不知道为什么这里需要IOptions。提供更多的上下文。应该能够从配置中获取连接字符串。IOptions用于将设置注入类中我尝试的是允许某人管理他们自己的配置(appsettings.json)文件,但在配置我的库时,我希望他们传递我的库所需的设置配置属性。我可以使用操作,但从操作中获取值的正确方法是什么?调用操作是正确的方法吗?actionOptions?调用(变量)?我完全不明白你到底在问什么(也许只是我)。如果试图重新加载配置数据,可以使用。但是我不知道
Action
与此有什么关系(或者即使您一直在引用
Action
或者您在这里也在引用Action方法)。您好@NightOwl888,我正在尝试了解如何最好地获取扩展方法的配置选项。我看过一些项目,例如,swagger在AddSwaggerGen中使用了一个动作。我试图理解为什么/什么时候你会用行动来代替行动。
//...

services.AddModule(Configuration["Appsettings Key Here"]);