我是asp.net核心的新手.
我正在尝试做的是构建多项目解决方案并使用依赖注入来传递项目之间的接口.
我所知道的是,在ASP.NET核心项目中,我们有文件中的ConfigureServices方法startup.cs来注册我们的接口及其实现,如下所示:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddTransient<IMyInterface,MyImplementation>();
.....
}
Run Code Online (Sandbox Code Playgroud)
如果您在同一个项目中拥有所有类,那么这很好,但如果我有多个项目怎么办?
通常我要做的是与安装程序(Windsor安装程序)创建单独的项目,以注册所需的接口及其实现.
在.net核心中,我们可以通过创建静态ServiceCollection();并从中获取静态IServiceProvider来随时使用它来获取您注册的任何服务:
public static IServiceCollection _serviceCollection { get; private set; }
public static IServiceProvider serviceProvider { get; private set; }
public static RegisterationMethod() {
_serviceCollection = new ServiceCollection();
_serviceCollection.AddSingleton<IMyInterface,MyImplementation>();
.....
serviceProvider = _serviceCollection.BuildServiceProvider();
}
public T GetService<T>() where T : class
{
return serviceProvider.GetService<T>();
}
Run Code Online (Sandbox Code Playgroud)
现在我们RegisterationMethod从ower启动项目调用并继续像往常一样开发,始终在此类中注册服务.
这种方法的问题是,如果我在ASP.NET核心项目中使用它,我将有两个地方来注册服务,这一个和startup.cs文件中的一个ConfigureServices(IServiceCollection services).
你可以说, …