c# 依赖注入
基本思想是,当一个对象需要其他对象来完成它的工作(例如,数据库连接)时,而不是在内部创建该对象,而是将该对象"注入"到该对象中,通常作为构造函数参数,或者由在使用该对象之前设置的公共属性进行。
这样做的好处是可以从外部更改所用对象的值(如果对象声明为接口,则这一点尤其正确)。这种方法的一个常见用途是用单元测试的模拟对象替换具体对象。
一 应用场景
.net core mvc/api
二 应用目的
是我要什么你就给我送过来,别让我大老远的找你去拿
三 基本用法
一般有两种用法:
1、定义一个接口或者抽象类IA,然后类A实现IA,当然也可以A、B、C、D多个类实现IA
2、直接定义类A、B、C等,不考虑派生类,直接注入到容器里。
关于具体实现一般是在构造函数中注入 另一种方式官方不推荐 这里就不介绍了
四 用法一实操过程
1、先定义一个接口
public interface ITest
{
string GetName();
}
2、定义一个实体类实现这个接口
public class TestA:ITest
{
public string GetName()
{
return "BugChang";
}
}
3、在Startup里注册服务(实体类)
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITest, TestA>();
services.AddMvc();
}
4、Controller层调用
private readonly ITest _test;
public HomeController(ITest test)
{
_test = test;
}
public IActionResult Test()
{
ViewBag.Name = _test.GetName();
return View();
}
<ul>
<li>@ViewBag.Names</li>
</ul>
四 用法二实操过程
定义实体类
public class Test
{
public string GetName()
{
return "BugChang";
}
}
注入服务(实体类)
services.AddSingleton<Test>();
其它代码相同
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 易语言 —— 开山篇
· 实操Deepseek接入个人知识库
· Trae初体验