IOC unity 使用
首先下载UNITY WED 和BLL项目引入Microsoft.Practices.Unity.DLL 和Microsoft.Practices.Unity.Configuration.DLL
项目架构

App.config 配置如下
typeAlias节点是给不太容易识记的类型名起一个别名(似乎有点废话),让一个拥有很我字符的类型名“变”短点。
container节点定义管理依赖关系和生命周期的容器(Ioc容器概念),需要在配置中提供一个名称。
type节点从其mapTo属性就可以看出其用途了,它提供依赖关系和生命周期的具体定义。
<type type="ITest" mapTo="Test" name="aTest"></type> 是ITest依赖Test
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/> </configSections> <unity> <typeAliases> <typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager,Microsoft.Practices.Unity" /> <typeAlias alias="Test" type="ConsoleApplication1.Test,ConsoleApplication1" /> <typeAlias alias="ITest" type="ConsoleApplication1.ITest,ConsoleApplication1" /> <typeAlias alias="BLLTest" type="BLL.Test,BLL" /> <typeAlias alias="IBLLTest" type="IBLL.ITest,IBLL" /> <typeAlias alias="DALTest" type="DAL.DALTest,DAL" /> <typeAlias alias="IDALTest" type="IDAL.IDALTest,IDAL" /> </typeAliases> <containers> <container name="containerOne"> <types> <type type="ITest" mapTo="Test" name="aTest"></type> <type type="IBLLTest" mapTo="BLLTest" name="aITest"></type> <type type="IDALTest" mapTo="DALTest" name="aIDALTest"></type> </types> </container> </containers> </unity> </configuration>
注意:WEB层必须引用下面所有层
IBLL.TEST.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace IBLL { public interface ITest { string say(string test); } }
BLL.TEST.cs
using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using IBLL; using Microsoft.Practices.Unity; using Microsoft.Practices.Unity.Configuration; namespace BLL { public class Test : ITest { public string say(string test) { UnityContainer myContainer = new UnityContainer(); UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); section.Containers["containerOne"].Configure(myContainer); IDAL.IDALTest IBLLTestss = myContainer.Resolve<IDAL.IDALTest>("aIDALTest"); return "BLL.Test->" + IBLLTestss.say("SSS"); } } }
IDAL.IDALTest.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace IDAL { public interface IDALTest { string say(string test); } }
DAL.IDALTest.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using IDAL; namespace DAL { public class DALTest:IDALTest { public string say(string test) { return "DAL.DALTest->" + test; } } }

浙公网安备 33010602011771号