Mini 容器学习笔记6——组件的获取(应用)
生活随笔
收集整理的這篇文章主要介紹了
Mini 容器学习笔记6——组件的获取(应用)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
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. 通過向組件的構(gòu)造函數(shù)傳遞參數(shù)數(shù)組的方式獲取: [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;}} //傳遞數(shù)組的方式 [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);} ???????????? //傳遞命名參數(shù)字典[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 容器官方網(wǎng)站:
?? ? ??http://nlite.codeplex.com/
推薦資源:
Mini容器介紹
Mini容器學(xué)習(xí)目錄
Mini容器學(xué)習(xí)目錄1——環(huán)境搭建(基礎(chǔ)篇)
Mini 容器學(xué)習(xí)筆記2——組件元數(shù)據(jù)(基礎(chǔ)篇)
Mini 容器學(xué)習(xí)筆記3——組件的注冊(基礎(chǔ)篇)
Mini 容器學(xué)習(xí)筆記4——組件的生命周期(應(yīng)用篇)
Mini 容器學(xué)習(xí)筆記5——組件的獲取
Mini 容器學(xué)習(xí)筆記6——組件的獲取(應(yīng)用)
Mini 容器學(xué)習(xí)筆記7——構(gòu)造函數(shù)注入
Mini 容器學(xué)習(xí)筆記8——字段注入
Mini 容器學(xué)習(xí)筆記9——屬性注入
Mini 容器學(xué)習(xí)筆記10——方法注入
Mini 容器學(xué)習(xí)筆記11——Lazy注入
Mini 容器學(xué)習(xí)筆記12——組合實例
Mini 容器學(xué)習(xí)筆記13——插件注入
Mini 容器學(xué)習(xí)筆記14——異常處理
Mini 容器學(xué)習(xí)筆記15——監(jiān)聽器-初始化監(jiān)聽器
Mini 容器學(xué)習(xí)筆記16——監(jiān)聽器-釋放監(jiān)聽器
Mini 容器學(xué)習(xí)筆記17——監(jiān)聽器-啟動/停止監(jiān)聽器
Mini 容器學(xué)習(xí)筆記18——監(jiān)聽器-AOP監(jiān)聽器
轉(zhuǎn)載于:https://www.cnblogs.com/netcasewqs/archive/2010/07/06/1772133.html
總結(jié)
以上是生活随笔為你收集整理的Mini 容器学习笔记6——组件的获取(应用)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上一张/下一张
- 下一篇: GestureDetector学习之左右