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>();


其它代码相同

posted @   遥月  阅读(1624)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 易语言 —— 开山篇
· 实操Deepseek接入个人知识库
· Trae初体验
点击右上角即可分享
微信分享提示