C# 构建可重用、可配置的.NET核心扩展?
几天来,我一直在努力寻找关于这个问题的好信息 我想建立一个模块,我将能够在以后的其他应用程序中重复使用。重要的是,它必须是可配置的C# 构建可重用、可配置的.NET核心扩展?,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,几天来,我一直在努力寻找关于这个问题的好信息 我想建立一个模块,我将能够在以后的其他应用程序中重复使用。重要的是,它必须是可配置的 我需要能够扩展DbContext(从我的模块添加模型) 我需要有关如何从主应用程序配置模块的信息 我试图找到关于这两个问题的任何教程/文档,但找不到任何内容。我知道如何创建能够调用services.AddMyModule()的方法,但是我找不到任何关于稍后在模块内传递配置和使用配置的信息 我真的很感激任何帮助。我希望我的问题很清楚。您可以使用其他参数定义静态IS
- 我需要能够扩展DbContext(从我的模块添加模型)
- 我需要有关如何从主应用程序配置模块的信息
services.AddMyModule()
的方法,但是我找不到任何关于稍后在模块内传递配置和使用配置的信息
我真的很感激任何帮助。我希望我的问题很清楚。您可以使用其他参数定义静态
IServiceCollection
方法,例如
public static MyModuleServiceCollectionExtensions
{
public static IServiceCollection AddMyModule(this IServiceCollection services, Action<DbContextOptionsBuilder<MyDbContext>> config
{
...
services.AddDbContext<MyDbContext>(config);
...
}
}
我不能理解close flag是离题的-真的吗?也不太宽。我已经在列表中清楚地问了2个问题我想问的是什么..2条建议:1)阅读这本书2)阅读并不要假设宿主应用程序只有1
DbContext
2。没错,但即使创建自己的DbContext(这是个好主意),我也需要以某种方式配置连接,例如NPGSQLDI。正确使用DI时,所有应用程序配置(如数据库连接)都发生在应用程序启动时。因此,您的模块通常需要向模块的使用者提供工具,以便能够提供此信息。看见对于.NET核心应用程序扩展来说,这通常意味着提供一个扩展方法或2,其中配置信息将被提供并传递给使用配置的组件(通过构造函数)是什么阻止您将具有相同签名的函数回调公开给AddDbContext
方法呢??!例如services.AddMyModule(dbConfig=>dbConfig.UseSqlServer(…))
?
services.AddMyModule(dbConfig => {
dbConfig.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
});