前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity Container中的几种注册方式与示例1.实例注册2.简单类型注册

Unity Container中的几种注册方式与示例1.实例注册2.简单类型注册

作者头像
小白哥哥
发布2018-03-07 14:28:10
1.4K0
发布2018-03-07 14:28:10
举报
文章被收录于专栏:技术小讲堂

1.实例注册

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

有如下的实际类型:

代码语言:javascript
复制
namespace ConsoleSample
{
    public class SampleClass
    {
        public int ReferenceCount { get; set; }

        public void Increase()
        {
            this.ReferenceCount++;
        }
    }
}

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

代码语言:javascript
复制
var container = new UnityContainer();
SampleClass sampleClass = new SampleClass();
container.RegisterInstance(sampleClass);

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

代码语言:javascript
复制
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
QQ截图20131208221557

2.简单类型注册

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

接口定义

代码语言:javascript
复制
namespace ConsoleSample
{
    public interface IFuckUp
    {
        int IncreaseFlag();
    }
}

类型定义

代码语言:javascript
复制
namespace ConsoleSample
{
    public class FuckUp
    {
        private int flag = 0;

        public int IncreaseFlag()
        {
            flag++;
            return flag;
        }
    }
}

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

代码语言:javascript
复制
var container = new UnityContainer();
container.RegisterType<IFuckUp, FuckUp>();

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

代码语言:javascript
复制
IFuckUp fuckUp1 = container.Resolve<IFuckUp>();
Console.WriteLine(fuckUp1.IncreaseFlag());
IFuckUp fuckUp2 = container.Resolve<IFuckUp>();
Console.WriteLine(fuckUp2.IncreaseFlag());

通过调用结果可以看出,此次解析两个类型时为创建的两个新的对象,我们使用了在1节中不同的方式对类型进行解析

1
1

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-12-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.实例注册
  • 2.简单类型注册
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档