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
,在这里我需要配置我的服务以及配置EFDbContext
示例:
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"]);