.NET MVC4 实训记录之一(引入Unity3.0 Ioc框架)

  一直在做维护项目,没有机会接触完整的架构,于是自学.NET MVC。自今日起,将自学的过程、遇到的问题以及解决方案记录下来。

  在WebApp项目中右键,使用NuGet引入Unity3.0。

  

  引入后项目目录下会自动生成一个Bootstrapper.cs文件。

  

   手动在WebApp根目录下创建IOC.config文件,用于配置IOC规则。(注意:之前看网上教程中的配置文 件,<typeAliases></typeAliases>节点和<unity></unity>节 点平级,但运行时总是异常,找不到IBaseService的定义。应该是没有找到自定义类型所在的程序集。我 将<typeAliases></typeAliases>节点移到<unity></unity>的 内部后,异常没有了。)

 1 <?xml version="1.0"?>
 2 <configuration>
 3 <configSections>  4 <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,  5 Microsoft.Practices.Unity.Configuration" />  6 </configSections>  7  8 <unity>  9 <typeAliases> 10 <!--生命周期类型别名--> 11 <typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager,Microsoft.Practices.Unity" /> 12 <typeAlias alias="external" type="Microsoft.Practices.Unity.ExternallyControlledLifetimeManager, Microsoft.Practices.Unity" /> 13 <!--用户定义的类型别名--> 14 <typeAlias alias="IBaseService" type="Framework.Services.IBaseService, Framework.Services" /> 15 <typeAlias alias="BaseService" type="Framework.Services.BaseService, Framework.Services" /> 16 </typeAliases> 17 <containers> 18 <container> 19 <types> 20       <!--默认为全生命周期,即为单例模式--> 21 <type type="IBaseService" mapTo="BaseService" /> 22 </container> 23 </containers> 24 </unity> 25 <startup> 26 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> 27 </startup> 28 </configuration>

  修改Bootstrapper.cs文件中的 BuildUnityContainer() 方法:

 1    private static IUnityContainer BuildUnityContainer()
 2  {  3 var container = new UnityContainer();  4  5 // register all your components with the container here  6 // it is NOT necessary to register your controllers  7  8 //获取IOC配置文件位置  9 string configFile = System.Web.HttpRuntime.AppDomainAppPath + "IOC.config"; 10 //设置扩展配置文件类型 11 var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile }; 12 //从config文件中读取配置信息 13 System.Configuration.Configuration config = 14  ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 15 //获取指定名称的配置节 16 UnityConfigurationSection configuration = (UnityConfigurationSection)config.GetSection("unity"); 17 //配置IOC容器 18  configuration.Configure(container); 19 20 return container; 21 }

  在Globale.asax.cs 中初始化IOC容器:

 1         protected void Application_Start()
 2  {  3  AreaRegistration.RegisterAllAreas();  4  5  WebApiConfig.Register(GlobalConfiguration.Configuration);  6  FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);  7  RouteConfig.RegisterRoutes(RouteTable.Routes);  8  BundleConfig.RegisterBundles(BundleTable.Bundles);  9  AuthConfig.RegisterAuth(); 10 11 Bootstrapper.Initialise(); //初始化IOC容器 12 }

  在Controller中添加IBaseService类型的属性,加上[Dependency]标记,这样在该Controller中就可以直接使用。

  

  IOC框架Unity 3.0引入完成。

转载于:https://www.cnblogs.com/libra1006/p/3896088.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值