如何在Asp .Net Core中启动时正确调用方法?

问题描述 投票:0回答:1

我想重用我为正在使用的Asp .Net Core项目中的Asp .Net Framework中的某些项目制作的库类。

对于该项目,我必须使用MySQL数据库,因此我将MySqlConnector NuGet包添加到了我的库类中。

由于已注册的.NET数据提供程序不会自动添加到全局程序集缓存中,因此我必须手动注册它,这要感谢在应用程序启动期间如DbProviderFactories.RegisterFactory("MySqlConnector", MySqlClientFactory.Instance)所述方法here的调用。

这是我的第一个.Net核心项目,所以我不知道是否应该这样做,但是我在Startup.cs文件中这样调用了该方法:

enter image description here

它正在工作,但我想知道这是否是正确的方法。您能建议我另一种合适的方法吗?

谢谢

asp.net-core
1个回答
1
投票

IMO,您的方法从根本上没有错。我看到的一个问题是您尝试运行的任务花费的时间太长,在这种情况下,最好生成一个任务。另一个是可重用性,您的代码耦合在一起。您可以通过将其包装在一个类中并通过接口将其注入到中间件组件中,然后调用一个方法来解决此问题。例如:

public interface ITask { void Run(); }

class RegisterMySqlTask : ITask { public void Run() { DbProviderFactories.RegisterFactory("MySqlConnector", MySqlClientFactory.Instance); } }

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITask, RegisterMySqlTask>();
    //rest goes here
}

public void Configure(IApplicationBuilder app)
{
    app.Use(async (context, next) =>
    {
        context.RequestServices.GetRequiredService<ITask>().Run();
        await next(context);
    });

    //rest goes here
}

但是请注意,这可能会使事情变得过于复杂。正如我所说,我相信您没有做错任何事情。

© www.soinside.com 2019 - 2024. All rights reserved.