.net core 依赖注入的多个使用方式

.Net

在Startup.cs文件的ConfigureServices方法中注册服务

services.AddSingleton<IMySingletonService, MySingletonService>()
services.AddScoped<IMyScopedService, MyScopedService>()
services.AddTransient<IMyTransientService, MyTransientService>()
services.AddSingleton<IOrderService>(new OrderService());
services.AddSingleton<IorderService>(serviceProvider =>
{
return new OrderService();
// 还可以使用serviceProvider对象参数获取已注册的服务进行更复杂的逻辑组合。
// serviceProvider.GetService<>()
});

//尝试注册,如果类型已注册,则不注册
services.TryAddSingleton<IOrderService, OrderService>();
// 如果类型已注册,实现也相同,则不注册
services.TryAddEnumerable(ServiceDescriptor.Singleton<IOrderService, OrderService>());

// 注册泛型模板
services.AddSingleton(typeof(IGenericService<>), typeof(GenericService<>));

// 移除和替换注册
service.Replace(ServiceDescriptor.Singleton<IorderService, OrderService>());
service.RemoveAll<IOrderService();

获取服务实例
//在构造函数注入服务实例,使用场景:需在多个方法里使用的服务
public 构造函数(IOrderService orderService, IGenericService<IOrderService> genericService);
//使用[FromServices]方式注入,使用场景:在单个方法里使用的服务
public int GetService([FromServices]IMySingletonService singleton1,
[FromServices]IMyScopedService scoped2,
[FromServices]IMyTransientService transient3) { }

我的博客,记录,笔记