一、建立类库项目SpringNetDemo.DAO,同时建立两个文件
1、IBLL.cs
namespace SpringNetDemo.DAO
{
public interface IPersonDao
{
void Save();
}
}
2、BLL.cs
namespace SpringNetDemo.DAO
{
public class PersonDao:IPersonDao
{
public void Save()
{
Console.WriteLine("save person....");
}
}
}
二、建立控制台应用程序,命名SpringNetDemo.Test,并引用SpringNetDemo.DAO
通常我们操作对象的方法如下
class Program
{
static void Main(string[] args)
{
IPersonDao pd = new PersonDao();
pd.Save();
}
}
此时调用者必须要依赖于IPersonDao ,PersonDao,如果要隐藏PersonDao类的实现,我们可以使用工厂模式来实现,那么我们再建立一个
类库SpringNetDemo.DaoFactory并引用SpringNetDemo.DAO,并且建立工厂数据访问类DataAccess.cs
namespace SpringNetDemo.DaoFactory
{
public static class DataAccess
{
public static IPersonDao CreatePersonDao()
{
return new PersonDao();
}
}
}
此时我们要操作对象可以用如下方法,调用者只要知道IPersonDao ,工厂就可以了,而不需要知道PersonDao
class Program
{
static void Main(string[] args)
{
IPersonDao pd1 = DaoFactory.DataAccess.CreatePersonDao();
pd.Save();
}
}
到了这里我们可能会思考,如果我们有一个框架可以帮我们来管理PersonDao对象就好了,继续。。。
在SpringNetDemo.Test中
1、添加对Spring.Core.dll,Common.Logging.dll引用
2、新建App.config配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
</sectionGroup>
</configSections>
<spring>
<context>
<!--<resource uri="config://spring/objects" />-->
<resource uri="objects.xml"></resource>
</context>
<!--<objects xmlns="http://www.springframework.net/">
<description>一个简单的控制反转例子</description>
<object id="PersonDao" type="SpringNetDemo.DAO.PersonDao,SpringNetDemo.DAO" />
</objects>-->
</spring>
</configuration>
3建立一个objects.xml
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net/">
<description>一个简单的控制反转例子</description>
<object id="PersonDao" type="SpringNetDemo.DAO.PersonDao,SpringNetDemo.DAO" />
</objects>
配置完成,下面通过程序调用
class Program
{
static void Main(string[] args)
{
IApplicationContext ctx = ContextRegistry.GetContext();
IPersonDao dao = ctx.GetObject("PersonDao") as IPersonDao;
if (dao != null)
{
dao.Save();
Console.WriteLine("我是IoC方法");
}
}
}
完成。。。。