要构建可重用,可配置的.NET Core扩展?

时间:2018-01-30 08:42:26

标签: c# asp.net-core .net-core

几天后,我试图找到有关此问题的任何有用信息。

我想构建一个模块,以后我可以在其他应用程序中重复使用。重要的是它必须是可配置的。

  • 我需要能够扩展DbContext(从我的模块添加模型)
  • 我需要有关如何从主应用程序配置模块的信息。

我试图找到关于这两个问题的任何教程/文档,但找不到任何东西。我知道如何创建方法以便能够调用services.AddMyModule()但我找不到任何关于传递配置并在稍后在模块中使用它的信息。

我真的很感激任何帮助。我希望我很清楚我在问什么。

1 个答案:

答案 0 :(得分:1)

您可以使用其他参数定义静态IServiceCollection方法,例如

public static MyModuleServiceCollectionExtensions
{
    public static IServiceCollection AddMyModule(this IServiceCollection services, Action<DbContextOptionsBuilder<MyDbContext>> config
    {
        ...
        services.AddDbContext<MyDbContext>(config);
        ...
    }
}

然后你可以在你的应用程序中调用它,如

services.AddMyModule(dbConfig => {
    dbConfig.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
});