1. 通过组件Id获取组件实例:

       [Test]public void GetByIdTest(){ServiceRegistry.Register<Person>("person");var person = ServiceLocator.Get<IPerson>("person");Assert.IsTrue(person != null);var person2 = ServiceLocator.Get<Person>("person");Assert.IsTrue(person2 != null);Assert.AreSame(person, person2);Assert.IsTrue(Person.HasVisited);}

2. 通过契约类型获取组件实例:

       [Test]public void GetByTypeTest(){ServiceRegistry.Register<Person>();var person = ServiceLocator.Get<IPerson>();Assert.IsTrue(person != null);var person2 = ServiceLocator.Get<IPerson,Person>();Assert.IsTrue(person2 != null);Assert.AreSame(person, person2);Assert.IsTrue(Person.HasVisited);}

3. 通过契约类型获取所有组件实例:

   [Contract]interface IPerson{string Name { get; set; }}class Person : IPerson{public string Name { get; set; }public static bool HasVisited;public Person(){HasVisited = true;}}[Contract]interface IHorse{}[Component]class RedHorse : IHorse{}class BlackHorse : IHorse{}class Person2 : IPerson{public string Name { get; set; }public IHorse Horse { get; set; }public Person2(IHorse horse){Horse = horse;}public Person2() { }}[Test]public void GetAllTest(){ServiceRegistry.Register<Person>().Register(typeof(Person2));var person = ServiceLocator.Get<IPerson>();Assert.IsTrue(person != null);Assert.IsTrue(typeof(IPerson).IsAssignableFrom(person.GetType()));var items = ServiceLocator.GetAll<IPerson>().ToArray();Assert.IsTrue(items.Length == 2);Assert.IsTrue(items[0] is Person);Assert.IsTrue(items[1] is Person2);}

4. 通过向组件的构造函数传递参数数组的方式获取:

    [Contract]interface IParameterConstructorInterface{int Id { get; }string Name { get; }IPerson Person { get; }}class ParameterConstructorClass : IParameterConstructorInterface{public int Id { get; private set; }public string Name { get; private set; }public IPerson Person { get; private set; }public ParameterConstructorClass(int id, string name, IPerson person){Id = id;Name = name;Person = person;}}
       //传递数组的方式
       [Test]public void NeedParameterConstructorTest(){var person = new Person();ServiceRegistry.Register<ParameterConstructorClass>();var instance = ServiceLocator.Current.Get(typeof(IParameterConstructorInterface), 10, "ZhangSan", person) as IParameterConstructorInterface;Assert.IsNotNull(instance);Assert.IsNotNull(instance);Assert.AreEqual(10, instance.Id);Assert.IsTrue("ZhangSan"== instance.Name);Assert.AreSame(person, instance.Person);}

        //传递命名参数字典[Test]public void NeedNamedParameterConstructorTest(){var ps = new Dictionary<string, object>();var person = new Person();ps["id"] = 10;ps["name"] = "ZhangSan";ps["person"] = person;ServiceRegistry.Register<ParameterConstructorClass>();var instance = ServiceLocator.Current.Get(typeof(IParameterConstructorInterface), ps) as IParameterConstructorInterface;Assert.IsNotNull(instance);Assert.AreEqual(10, instance.Id);Assert.IsTrue("ZhangSan" == instance.Name);Assert.AreSame(person, instance.Person);}

Mini 容器官方网站:

http://nlite.codeplex.com/

推荐资源:

Mini容器介绍

Mini容器学习目录

Mini容器学习目录1——环境搭建(基础篇)

Mini 容器学习笔记2——组件元数据(基础篇)

Mini 容器学习笔记3——组件的注册(基础篇)

Mini 容器学习笔记4——组件的生命周期(应用篇)

Mini 容器学习笔记5——组件的获取

Mini 容器学习笔记6——组件的获取(应用)

Mini 容器学习笔记7——构造函数注入

Mini 容器学习笔记8——字段注入

Mini 容器学习笔记9——属性注入

Mini 容器学习笔记10——方法注入

Mini 容器学习笔记11——Lazy注入

Mini 容器学习笔记12——组合实例

Mini 容器学习笔记13——插件注入

Mini 容器学习笔记14——异常处理

Mini 容器学习笔记15——监听器-初始化监听器

Mini 容器学习笔记16——监听器-释放监听器

Mini 容器学习笔记17——监听器-启动/停止监听器

Mini 容器学习笔记18——监听器-AOP监听器

转载于:https://www.cnblogs.com/netcasewqs/archive/2010/07/06/1772133.html

Mini 容器学习笔记6——组件的获取(应用)相关推荐

  1. Mini 容器学习笔记4——组件的生命周期(应用篇)

    Mini容器支持6中生命周期类型: 1. Singleton :单利类型(缺省组件都是单利类型的生命周期,由容器进行托管的) [Test]public void SingletonLifestyleT ...

  2. Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用

    Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用 按照官网教程学习使用组件,并且重点把容器组件的应用进行了练习. 1.官网关于组件的介绍 组件是视图层的基本组成单元,是一个单独且可复用的 ...

  3. Docker容器学习笔记一

    Docker容器学习笔记一 狂神说B站视频:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 Docker容器学习笔记二:https://blog.csd ...

  4. 《C++Primer》第九章-顺序容器-学习笔记(1)-顺序容器定义与操作

    <C++Primer>第九章-顺序容器-学习笔记(1) 文章目录 <C++Primer>第九章-顺序容器-学习笔记(1) 摘要 顺序容器的定义 容器元素的初始化 将一个容器初始 ...

  5. Python学习笔记:用Python获取数据(本地数据与网络数据)

    Python学习笔记:用Python获取数据(本地数据与网络数据) 一.用Python获取本地数据 读写文件(三种基本模式:r, w, a) 1.写文件 2.读文件

  6. PC微信hook学习笔记(一)—— 获取个人信息

    PC微信hook学习笔记(一)-- 获取微信个人信息 1 起步 2. 获取基址 2.1 用CE查看个人信息 2.1.1 获取昵称基址 2.1.2 dll模块基址 2.2 用OD查看个人信息 2.3 内 ...

  7. python pandas修改列名,Python_Pandas学习笔记02:DataFrame获取列名和修改列名

    Python_Pandas学习笔记02:DataFrame获取列名和修改列名 Python_Pandas学习笔记02:DataFrame获取列名和修改列名 一.参考资料 [1].?Pandas获取列名 ...

  8. OpenHarmony学习笔记——Hi3861使用DHT11获取温湿度

    文章目录 前言 DHT11简介 通信流程 硬件连接 编程实现 GPIO API简介 复位总线 DHT11应答 数据读取 效果一览 总结 目录 前言 此文主要是使用Hi3861的GPIO口,模拟1-Wi ...

  9. Polyworks脚本开发学习笔记(十一)-玩转获取参数(GET)与设置参数

    Polyworks脚本开发学习笔记(十一)-玩转获取参数(GET)与设置参数 Polyworks采用了脚本语言作为二次开发的工具,因此语言格式上非常规范和统一.其中一个重要的特点就是,几乎所有的对象都 ...

最新文章

  1. android studio2.3.2增加jni
  2. Western Digital使用5400 rpm级硬盘使所有人感到困惑
  3. 禁用TwebBrowser右键
  4. 国内人工玻璃体和日本人工玻璃体的区别
  5. java中,剩下的这两个内部类不太好理解!
  6. 条款十一: 为需要动态分配内存的类声明一个拷贝构造函数和一个拷贝赋值运算符...
  7. 谷歌大脑全新软件能让马赛克样模糊人脸变清晰
  8. 无法连接到SQL SERVER数据库
  9. 试读《线上幽灵:世界头号黑客米特尼克自传》
  10. android视频录制、另一部手机实时观看方案
  11. std::is_same的用法
  12. css动画无限循环转圈,css实现无限循环
  13. windows服务器无法安装net3.5 提示:无法通过windows功能控制面板自动安装或卸载windows server角色和功能服务器
  14. 漫画APP开发前景浅析
  15. wps.wrod.excel基本操作总结
  16. BTree和B+Tree详解结构
  17. 进程间通信之面包师问题
  18. 获取服务器微信头像更改不同规格图片大小
  19. 高铁只接触一根电网,具体是怎么运行的呢
  20. linux访问共享命令,Linux访问共享资源命令 smbclient

热门文章

  1. [web性能优化] - 使用在线工具对html、js、css进行压缩
  2. javascript --- js中的作用域 变量提升
  3. javascript --- 再读作用域和闭包
  4. http --- HTTPS是在安全的传输层上发送的HTTP
  5. 我的一点企业做云经验
  6. Retrofit2源码解析——网络调用流程(下)
  7. 《Axure RP8 网站和APP原型制作 从入门到精通》一2.7 交付
  8. Facebook开源动画库 POP-POPBasicAnimation运用
  9. 互联网产品跨部门沟通的10个原则(转)
  10. DOM Element