zoukankan      html  css  js  c++  java
  • Unity Container

    Unity Container中的几种注册方式与示例

    2013-12-08 22:43 by 小白哥哥, 22 阅读, 0 评论, 收藏编辑

    1.实例注册

    最简单的注册方式就是实例注册,Unity 容器负责维护对一个类型的单例引用,比如:

    有如下的实际类型:

    namespace ConsoleSample
    {
        public class SampleClass
        {
            public int ReferenceCount { get; set; }
    
            public void Increase()
            {
                this.ReferenceCount++;
            }
        }
    }
    

    使用UnityContainer的RegisterInstance方法对这个类型进行实例注册:

    var container = new UnityContainer();
    SampleClass sampleClass = new SampleClass();
    container.RegisterInstance(sampleClass);

    而后,我们可以使用UnityContainer的Resolve方法对这个类型进行解析和调用:

    SampleClass resolvedSampleClass1 = (SampleClass)container.Resolve(typeof(SampleClass));
    resolvedSampleClass1.Increase();
    Console.WriteLine(resolvedSampleClass1.ReferenceCount);
    SampleClass resolvedSampleClass2 = (SampleClass)container.Resolve(typeof(SampleClass));
    resolvedSampleClass2.Increase();
    Console.WriteLine(resolvedSampleClass2.ReferenceCount);

    查看调用的结果,可以发现这里解析并调用的实同一个类的实例:

    QQ截图20131208221557

    2.简单类型注册

    更常见的类型注册是映射借口与实际类型,有如下接口与实现接口的类型:

    接口定义

    namespace ConsoleSample
    {
        public interface IFuckUp
        {
            int IncreaseFlag();
        }
    }

    类型定义

    namespace ConsoleSample
    {
        public class FuckUp
        {
            private int flag = 0;
    
            public int IncreaseFlag()
            {
                flag++;
                return flag;
            }
        }
    }

    可以使用RegisterType<>方法对这个接口和实现类型进行映射:

    var container = new UnityContainer();
    container.RegisterType<IFuckUp, FuckUp>();

    而后使用Resolve<>方法对类型进行解析:

     
    IFuckUp fuckUp1 = container.Resolve<IFuckUp>();
    Console.WriteLine(fuckUp1.IncreaseFlag());
    IFuckUp fuckUp2 = container.Resolve<IFuckUp>();
    Console.WriteLine(fuckUp2.IncreaseFlag());
    通过调用结果可以看出,此次解析两个类型时为创建的两个新的对象,我们使用了在1节中不同的方式对类型进行解析1

    看来又是一篇简单的笔记,快十一点要去锻炼身体了,下一篇写构造函数注入

  • 相关阅读:
    网络七层
    微信小程序开发工具 常用快捷键
    BZOJ 1026 windy数 (数位DP)
    BZOJ 1026 windy数 (数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3709 Balanced Number (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3464430.html
Copyright © 2011-2022 走看看