码迷,mamicode.com
首页 > 编程语言 > 详细

.Net IOC框架之Unity

时间:2019-03-19 21:45:25      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:OLE   com   ext   ase   代码   gis   资料   intercept   configure   

一、概述

1.什么是IOC

IOC控制反转:

1.在传统开发中,上端依赖(调用/指定)下端对象,会有依赖,比如在传统的三层架构上,BLL层会对DAL层有依赖
2.把对下端对象的依赖转移到第三方容器(工厂+配置文件+反射),可以说简单工厂就是IOC的雏形
3.能够让程序拥有更好的扩展性

说到IOC,还有一个必须要提到的概念:DI也就是依赖注入,可以说DI就是实现IOC的一种方式

2.Unity的使用

首先创建一个控制台程序和一个IDAL层和DAL层,结构如下

技术图片

1.先看一下BaseDAL和IBaseDAL,代码非常简单

namespace IDAL
{
   public interface IBaseDAL
    {
        void Insert();
    }
}
namespace DAL
{
    public class BaseDAL: IBaseDAL
    {
        public void Insert()
        {
            Console.WriteLine("Insert");
        }
    }
}

 2.准备好基础代码,然后开始填坑了

要使用unity,首先得先去nuget一下包

技术图片

说一下自己遇到得坑,因为要用到配置,记得引用一下 system.configuration,根据网上很多篇博客上说只需要安装unity和unity interception就可以了,

然后这个UnityConfigurationSection死活找不着命名空间,经过自己查找资料,需要引用unity.configuration才可以,引用完,命名空间到是找到了,可是又出现了另外一个错误
技术图片

经过查资料,发现还是缺少引用了一个包unity.interception.Configuration.引用完就可以了

配置文件如下
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/>
  </configSections>
  <unity>
    <sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Unity.Interception.Configuration"/>
    <containers>
      <container name="MyContainer">
        <register type="IDAL.IBaseDAL, IDAL" mapTo="DAL.BaseDAL, DAL"/>
      </container>
    </containers>
  </unity>
</configuration>

代码如下

static void Main(string[] args)
{
try
{
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Config\\Unity.Config");//找配置文件的路径
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);
//创建容器
IUnityContainer container = new UnityContainer();
//加载到容器
section.Configure(container, "MyContainer");
IBaseDAL baseDAL = container.Resolve<IBaseDAL>();
baseDAL.Insert();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();

}

 运行结果

技术图片

 

.Net IOC框架之Unity

标签:OLE   com   ext   ase   代码   gis   资料   intercept   configure   

原文地址:https://www.cnblogs.com/y-easy/p/10561125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!