我的项目组如下:
1)共享类库
2) Web
3)控制台应用程序
我的问题是:
我是否应该创建一个包含控制台应用程序和Web共享的ConfigureServices方法的DI容器类?
或者,每个应用程序负责绑定它们自己的依赖关系更有意义吗?
提前感谢!
发布于 2017-03-03 06:04:16
国际奥委会注册
这取决于应用程序的性质,但总的来说,我要说的是,您希望将其分开,并将其包含在任何一个应用程序中。两个应用程序中相同的内容不需要抽象和ioc注册(不要使不需要抽象的事物变得抽象)。
也就是说,您可以看到microsft使用扩展方法模式同时添加多个请求,比如:services.AddMvc()是一个扩展方法,用于添加大约20个ioc注册。您也可以在共享库中这样做。只需在启动类中添加services.AddSharedLibrary():
public static class MyServiceExtensions
{
public static IServiceCollection AddMyLibrary(this IServiceCOllection services)
{
services.Add<Interface1,Implemenetation1>();
services.Add<Interface2,Implemenetation2>();
return services;
}
}启动基类
您还可以为Startup创建一个(抽象)基类。但是这意味着您的共享库现在需要依赖于HttpBuilder/Kestrel包。如果您在哪里创建一个Servicebus队列侦听器,这将是很奇怪的。
创建启动基类的一个好理由是:如果您希望所有启动项目都有相同的方式和顺序来构建应用程序设置和/或希望它们使用与IOptions配置相同的应用程序设置。但在这种情况下,我建议为此创建一个单独的共享库,专门用于提供相同的StartupBase和配置。
https://stackoverflow.com/questions/42571644
复制相似问题