c#使用依赖注入
在C#中,依赖注入(Dependency Injection,DI)是一种非常重要的设计模式,尤其是在使用.NET框架进行开发时。C#的依赖注入可以通过多种方式实现,包括手动实现和使用框架提供的依赖注入容器。以下将详细介绍如何在C#中使用依赖注入。
1. 手动实现依赖注入
手动实现依赖注入主要是通过构造函数注入或Setter注入的方式,将依赖关系从外部传入。这种方式不依赖于任何框架,代码更加直观。
示例代码
假设有一个
Car类依赖于Engine接口:public interface IEngine
{
void Run();
}
public class V8Engine : IEngine
{
public void Run()
{
Console.WriteLine("V8 engine running.");
}
}
public class Car
{
private readonly IEngine _engine;
// 构造函数注入
public Car(IEngine engine)
{
_engine = engine;
}
public void Start()
{
_engine.Run();
}
}
在客户端代码中,可以这样使用:
class Program
{
static void Main(string[] args)
{
IEngine engine = new V8Engine();
Car car = new Car(engine);
car.Start(); // 输出:V8 engine running.
}
}
2. 使用.NET Core/ASP.NET Core的依赖注入容器
从.NET Core开始,微软提供了一个内置的依赖注入容器,可以方便地管理依赖关系。以下是如何在.NET Core或ASP.NET Core项目中使用依赖注入的示例。
示例代码
首先,在
Startup.cs中配置依赖关系:public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 注册依赖关系
services.AddTransient<IEngine, V8Engine>();
services.AddTransient<Car>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 省略其他代码
}
}
然后,在控制器中注入
Car类:public class HomeController : Controller
{
private readonly Car _car;
public HomeController(Car car)
{
_car = car;
}
public IActionResult Index()
{
_car.Start(); // 输出:V8 engine running.
return View();
}
}
浙公网安备 33010602011771号