IOC(Inversion of Control,控制反转) 是一种设计原则,广泛应用于软件设计中,特别是在面向对象编程(OOP)中。IOC的核心思想是将对象的创建和管理从应用程序的代码中分离出来,交给一个外部的容器或框架来处理。这种设计原则有助于提高代码的可维护性、可测试性和模块化程度。 IOC的主要形式:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ILogger, ConsoleLogger>();
services.AddTransient<UserService>();
}
}
public class Program
{
public static void Main(string[] args)
{
var serviceProvider = new ServiceCollection()
.AddSingleton<ILogger, ConsoleLogger>()
.AddTransient<UserService>()
.BuildServiceProvider();
var userService = serviceProvider.GetService<UserService>();
userService.RegisterUser("John Doe");
}
}
复制代码
Unity:
由微软开发的轻量级依赖注入容器。
var container = new UnityContainer();
container.RegisterType();
container.RegisterType();
var userService = container.Resolve();
userService.RegisterUser("John Doe");
Autofac:
一个功能强大的依赖注入容器。
var builder = new ContainerBuilder();
builder.RegisterType().As();
builder.RegisterType();
var container = builder.Build();
var userService = container.Resolve();
userService.RegisterUser("John Doe");