Mini 容器学习笔记6——组件的获取(应用)
生活随笔
收集整理的這篇文章主要介紹了
Mini 容器学习笔记6——组件的获取(应用)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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——组件的获取(应用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上一张/下一张
- 下一篇: GestureDetector学习之左右