今天在网上找了一些unity资料研究,出了好多问题,编译无法通过,经人指点总算成功编译运行,做个笔记,整理如下:

一、下载unity

二、在项目中添加Microsoft.Practices.Unity.dll和Microsoft.Practices.Unity.Configuration.dll的引用;

三、app.config如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<alias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager,Microsoft.Practices.Unity"></alias>
<alias alias="ISayHello2" type="TestUnity.ISayHello2,TestUnity"></alias>
<alias alias="SayHello2Think" type="TestUnity.SayHello2Think,TestUnity"></alias>
<alias alias="SayHello2ACloud" type="TestUnity.SayHello2ACloud,TestUnity"></alias>
<alias alias="ISingletonDemo" type="TestUnity.ISingletonDemo,TestUnity"></alias>
<alias alias="SingletonDemoImp1" type="TestUnity.SingletonDemoImp1,TestUnity"></alias>
<container name="TestUnity">
<register type="ISayHello2" mapTo="SayHello2Think" name="think"/>
<register type="ISayHello2" mapTo="SayHello2ACloud" name="aCloud"/>
<register type="ISingletonDemo" mapTo="SingletonDemoImp1" name="singletonDemoImp1">
</register>
</container>
</unity>
</configuration>

  Unity的配置节的名称为”Unity",节处理程序的类型为 Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,它包含在程序集 Microsoft.Practices.Unity.Configuration 中;

name:在注册此类型时使用的名称。此属性是可选的,如果不指定此属性,所在的 add 元素即为默认的类型映射。

type:容器中配置的源类型。如果这是映射注册,这就是映射的起始对象的类型;如果这是单件注册,这就是对象的类型。此属性是必须的。

mapTo:类型映射的目标类型。如果这是映射注册,这就是映射的目标对象的类型。此属性是可选的。

lifetime:设置用于给定的类型和名称的生命周期。是一个来自 LifetimeStyle 枚举的值。有效的值是 Transient(默认),它导致了容器每次都创建一个新的实例;以及Singleton,它使容器为每个请求返回同一实例。如果在配置一个单件时同时指定了type和mapto属性,SetSingleton 方法将返回指定在 mapTo 属性中的类型。如果mapTo属性没有指定值,SetSingleton 方法将返回指定在 type 属性中的类型。

四、新建一个项目,在里面加入如下几个文件:

ISayHello2.cs

    public interface ISayHello2
    {
        string SayHello();
    }

SayHello2Think8848.cs


    public class SayHello2Think8848 : ISayHello2
    {
        #region ISayHello2 成员         public string SayHello()
        {
            return "Hello think8848!";
        }         #endregion
    }

SayHello2ACloud.cs

 

    public class SayHello2ACloud : ISayHello2
    {
        #region ISayHello2 成员         public string SayHello()
        {
            return "Hello aCloud!";
        }         #endregion
    }
 

ISingletonDemo.cs

    public interface ISingletonDemo
    {
        DateTime GetInitTime();
    }

SingletonDemoImpl.cs

    public class SingletonDemoImpl : ISingletonDemo
    {
        private DateTime time;         public SingletonDemoImpl()
        {
            this.time = DateTime.Now;
        }         #region ISingletonDemo 成员         public DateTime GetInitTime()
        {
            return this.time;
        }         #endregion
    }

五、Main方法如下:

 static void Main()
{
UnityContainer myContainer=new UnityContainer();
UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(myContainer, "TestUnity");
// section.Containers["TestUnity"].Configure(myContainer);
ISayHello2 sayHello2ACloud = myContainer.Resolve<ISayHello2>("aCloud");
Console.WriteLine(sayHello2ACloud.sayHello()); }

  

unity--IOC框架资料整理的更多相关文章

  1. 今天研究Unity Ioc 框架

    今天研究Unity Ioc 框架,被自己坑了两个多小时. 运行就报错,反反复复检查了很多次,配置文件,代码都没有问题,也从新写了好几遍. 最后仔细看报错消息才知道,config文件没有生成到目录……… ...

  2. MVC4 基于 Unity Ioc 框架的 ControllerFactory

    首先引入Untiy框架. 可以在NuGet程序包 管理器中直接安装. 新建 继承DefaultControllerFactory  的UnityControllerFactory: 重写虚方法GetC ...

  3. .NET Unity IOC框架使用实例

    1.IOC简介 IOC(Inversion of Control), 控制反转 DI (Dependency Injection),依赖注入 IOC的基本概念是:不创建对象,但是描述创建它们的方式.在 ...

  4. 三款Javascript SPAs框架资料整理和总结

    一.框架介绍 RequireJS 资料:http://www.requirejs.cn/RequireJS的目标是鼓励代码的模块化,它使用了不同于传统<script>标签的脚本加载步骤.可 ...

  5. Unity Ioc框架简单例子

    IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection).作用:将各层的对象以松耦合的方式组织在一起,解耦,各 ...

  6. 对于zuul服务网关框架资料整理

    本次博客只是整理了一些 看过的博客.源码等 zuul入门(1)zuul 的概念和原理 https://www.cnblogs.com/lexiaofei/p/7080257.html 深入理解Zuul ...

  7. .NET领域最为流行的IOC框架之一Autofac WebAPI2使用Autofac实现IOC属性注入完美解决方案 AutoFac容器初步

    .NET领域最为流行的IOC框架之一Autofac   一.前言 Autofac是.NET领域最为流行的IOC框架之一,微软的Orchad开源程序使用的就是Autofac,Nopcommerce开源程 ...

  8. 使用Microsoft的IoC框架:Unity来对.NET应用进行解耦

    1.IoC/DI简介 IoC 即 Inversion of Control,DI 即 Dependency Injection,前一个中文含义为控制反转,后一个译为依赖注入,可以理解成一种编程模式,详 ...

  9. 【微服务】使用spring cloud搭建微服务框架,整理学习资料

    写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...

随机推荐

  1. python 基础——运算符重载

    方法 重载 调用 __init__ 构造函数 x = Class() __del__ 析构函数 del x __str__ 打印 print x __call__ 调用函数 x(*args) __ge ...

  2. dfa最小化,终于完成了。

    采取的方法是hopcroft的填表法,详情见如下代码 #include "nfa_to_dfa.h" int* dfa_diff_matrix; int mini_dfa_numb ...

  3. could not read data from '/Users/xxxx/myapp-Info.plist'

    xcode编译报错如下: could not read data from '/Users/iamme/Documents/XCode/myapp/myapp/myapp-Info.plist': T ...

  4. codevs4600 [NOI2015]程序自动分析==洛谷P1955 程序自动分析

    4600 [NOI2015]程序自动分析  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 在实现 ...

  5. 发现个div float的小秘密

    浮动时宽度塌缩了不再是父元素100%.

  6. Jquery 格式化时间

    我们常常会通过datetime得到时间,但是网页前台往往会显示不同的时间 如:2013-12-15 2013年12月23日 2013 12 15 等多种显示效果,这就需要我们把时间格式化一下. 下面是 ...

  7. Part 11 Search filter in AngularJS

    As we type in the search textbox, all the columns in the table must be searched and only the matchin ...

  8. Android之图片滑动与显示

    先在Transitions中插入ImageSwitcher package com.example.Galleryphotoshow; import com.example.Galleryphotos ...

  9. AccessHelper类

    using System; using System.Data; using System.Configuration; using System.Data.OleDb; using System.C ...

  10. Centos6的VSFTP服务器配置使用教程

    Centos 6 的VSFTP 关闭SELinux,在终端机输入 vi /etc/selinux/config SELINUX=enforcing 改成 SELINUX=disabled 关闭seli ...