我试图总是以模块化的方式设计我的应用程序。我希望能够在任何给定的交换模块。依赖注入模块化依赖注册
使用依赖注入模式允许我这样做。但是有些东西一直困扰我很多。
在大多数代码我来跨越存在其中接口被链接到所期望的接口的单个地方。例如在asp.net vnext中,它看起来像这样:
public void ConfigureServices(IServiceCollection services)
{
// business-layer
services.AddTransient<IArticleRepository, ArticleRepository>();
// data-layer
services.AddTransient<IDataConnection, DataConnection>();
}
但我不喜欢只有一个地方做注册。我宁愿每个模块注册自己的接口/实现:
在我的业务层(模块)
public void ConfigureServices(IServiceCollection services)
{
// business-layer
services.AddTransient<IArticleRepository, ArticleRepository>();
}
在我的数据层(模块)
public void ConfigureServices(IServiceCollection services)
{
// data-layer
services.AddTransient<IDataConnection, DataConnection>();
}
有任何图案,或最好的做法来做这种事情?我可以创建一些接口并加载该接口的所有实现,但我不确定这是否是实现此目的的最佳方式。