接口注入:也就是说将注入的代码放在了接口里,与构造函数和属性注入在整体代码结构上不同。用接口可以提高类的灵活性,将注入的代码抽象出来放入接口里这样就不只是Order类可以写入数据库了,其他的类如果也想写入数据库去实现接口即可。
本篇代码与前两篇结构一样,只是多了个注入用的接口
SqlServerDal、Access类:
using System;
namespace Ioc2
{
class SqlServerDal : IDataAccess
{
public void Add()
{
Console.WriteLine("在sqlserver数据库中添加一条订单");
}
}
}
namespace Ioc2
{
class Access : IDataAccess
{
public void Add()
{
Console.WriteLine("在access数据库中添加一条订单");
}
}
}
Order类:
namespace Ioc2
{
class Order :IQuote
{
private IDataAccess _ida;
//向数据库添加订单的方法
public void Add()
{
_ida.Add();
}
//实现接口完成注入
public void SetQuote(IDataAccess ida)
{
_ida = ida;
}
}
}
数据库接口与注入接口:
namespace Ioc2
{
interface IDataAccess
{
void Add();
}
}
namespace Ioc2
{
//接口注入用
interface IQuote
{
void SetQuote(IDataAccess dataAccess);
}
}
客户端:
namespace Ioc2
{
class Program
{
static void Main(string[] args)
{
Order order = new Order();
//将要用的数据库对象传入接口,让接口去执行注入
order.SetQuote(new SqlServerDal());
order.Add();
}
}
}