Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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# 构建可重用、可配置的.NET核心扩展?_C#_Asp.net Core_.net Core - Fatal编程技术网

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"));
});