依赖关系就是一个对象对另一个对象的依赖,没有这个对象就会出异常,如下代码
public class MyDependency
{
public void Msg(string msg)
{
Console.WriteLine(msg);
}
}
public class Test
{
private MyDependency myDependency = new MyDependency();
public void ShowMsg()
{
myDependency.Msg("zxc");
}
}
Test 类依赖于 MyDependency 类 如果要使用不同实现替换MyDependency必须修改Test
2.如何解决依赖
依赖关系通过以下方式解决了这些问题,
1使用接口或基类将依赖抽象化
2在服务容器中注册依赖关系
3将服务注入到使用者的类的构造函数中,框架负责创建依赖关系的实例,并在不用的时候释放
//抽象为接口
public interface IMyDependency
{
void WriteMessage(string message);
}
//继承
public class MyDependency : IMyDependency
{
public void WriteMessage(string message)
{
Console.WriteLine($"MyDependency.WriteMessage Message: {message}");
}
}
//注册服务
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IMyDependency, MyDependency>();
services.AddControllersWithViews();
}
//构造函数注入
public class Test
{
private IMyDependency myDependency;
public Test(IMyDependency myDependency)
{
this.myDependency = myDependency;
}
public void ShowMsg()
{
myDependency.Msg("zxc");
}
}