代码整体结构和上篇构造函数注入一样,只是在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
{
private IDataAccess _ida;
public IDataAccess Ida
{
get { return _ida; }
set { _ida = value; }
}
public void Add()
{
_ida.Add();
}
}
}
数据库接口 IDataAccess:
namespace Ioc2
{
interface IDataAccess
{
void Add();
}
}
客户端:
namespace Ioc2
{
class Program
{
static void Main(string[] args)
{
Order order = new Order();
//用哪个数据库就实例化那个并为Ida赋值
order.Ida = new Access();
order.Add();
}
}
}