首页
IT服务
解决方案
IT实战培训
关于我们
您的位置 :
ITLead >>
技术交流
>>
软件开发
>>
Microsoft .Net
如何使用源代码配置Unity?
来源:广州中睿信息技术有限公司
发布时间:
2012/10/21 23:25:16
编辑:
itlead
阅读
2352
次
Unity框架是轻量级的可扩展的依赖注入容器,允许你指定应用程序的执行过程中要使用的接口实现。例如,可能会有不同的加密算法的实现,服务调用替换单元测试的模仿对象等等,你可以使用应用程序配置文件或源代码配置Unity。下面的示例显示了两种方法。
App.config or Web.config file: 01 <?xml version="1.0" encoding="utf-8" ?> 02 <configuration> 03 <configSections> 04 <section name="unity"type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/> 05 </configSections> 06 <unity> 07 <typeAliases> 08 <typeAlias alias="anotherName" type="UnityContainerTest.DatabaseRepository, UnityContainerTest" /> 09 </typeAliases> 10 <containers> 11 <container name="containerOne"> 12 <types> 13 <type type="UnityContainerTest.IRepository, UnityContainerTest" 14 mapTo="UnityContainerTest.DatabaseRepository, UnityContainerTest" /> 15 </types> 16 </container> 17 </containers> 18 </unity> 19 </configuration> Application code: 01 using System.Configuration; 02 using Microsoft.Practices.Unity; 03 using Microsoft.Practices.Unity.Configuration; 04 using Microsoft.VisualStudio.TestTools.UnitTesting; 05 06 namespace UnityContainerTest 07 { 08 public interface IRepository { } 09 public class FileRepository : IRepository { } 10 public class DatabaseRepository : IRepository { } 11 12 [TestClass] 13 public class Test 14 { 15 static void Main(string[] args) 16 { 17 } 18 19 /// <summary> 20 /// Initialize unity container using application code 21 /// </summary> 22 [TestMethod] 23 public void InitUsingCodeTest() 24 { 25 IUnityContainer myContainer = new UnityContainer(); 26 myContainer.RegisterType(typeof(IRepository), typeof(FileRepository)); 27 28 var repository = myContainer.Resolve<IRepository>(); 29 30 Assert.IsInstanceOfType(repository, typeof(FileRepository)); 31 } 32 33 /// <summary> 34 /// Initialize unity container using application configuration file 35 /// </summary> 36 [TestMethod] 37 public void InitUsingConfigurationFileTest() 38 { 39 IUnityContainer myContainer = new UnityContainer(); 40 41 var section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); 42 section.Configure(myContainer, "containerOne"); 43 44 var repository = myContainer.Resolve<IRepository>(); 45 46 // DatabaseRepository is retured as a result of the following configuration entry 47 // <type type="UnityContainerTest.IRepository, UnityContainerTest" 48 // mapTo="UnityContainerTest.DatabaseRepository, UnityContainerTest" /> 49 Assert.IsInstanceOfType(repository, typeof(DatabaseRepository)); 50 } 51 } 52 }
本站技术原创栏目文章均为中睿原创或编译,转载请注明:文章来自
中睿
,本站保留追究责任的权利。
相关阅读
· Asp.Net Couchbase Memcached图文安装调用开发2013.11.25
· 使用Aspose.Cells组件生成Excel文件实例2013.11.25
· 如何在.net中定制Nhibernate属性?2012.10.21
· MVC3 自定义HtmlHelper截断文本内容2012.10.21
· 如何获取ASPX页面的服务端控件ClientID?2012.10.21