依赖注入初级理解
依赖注入可以理解为继承某个接口类来实现多态
//需要继承的接口类
internal interface IServiceClass
{
String ServiceInfo();
}
//继承接口,A
internal class ServiceClassA : IServiceClass
{
public String ServiceInfo()
{
return "我是ServceClassA";
}
}
//继承接口,b
internal class ServiceClassB : IServiceClass
{
public String ServiceInfo()
{
return "我是ServceClassB";
}
}
有个类使用这个类,但私有字段是接口,使用的时候传入具体的实例化对象
internal class ClientClass
{
//定义依赖接口
private IServiceClass _serviceImpl;
//用这个接口实现多态
public void Set_ServiceImpl(IServiceClass serviceImpl)
{
this._serviceImpl = serviceImpl;
}
public void ShowInfo()
{
Console.WriteLine(_serviceImpl.ServiceInfo());
}
}
具体使用
class Program
{
static void Main(string[] args)
{
IServiceClass serviceA = new ServiceClassA();
IServiceClass serviceB = new ServiceClassB();
ClientClass client = new ClientClass();
client.Set_ServiceImpl(serviceA);
client.ShowInfo();
client.Set_ServiceImpl(serviceB);
client.ShowInfo();
}
}
构造注入其实也差不多少
唯一的变化就是构造函数取代了Set_ServiceImpl方法,成为了注入点。
internal class ClientClass
{
//定义依赖接口
private IServiceClass _serviceImpl;
//用这个接口实现多态
public void ClientClass(IServiceClass serviceImpl)
{
this._serviceImpl = serviceImpl;
}
public void ShowInfo()
{
Console.WriteLine(_serviceImpl.ServiceInfo());
}
}