成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Unity控制反轉(zhuǎn)的方法是什么

本篇內(nèi)容主要講解“Unity控制反轉(zhuǎn)的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Unity控制反轉(zhuǎn)的方法是什么”吧!

目前累計服務(wù)客戶近千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗。以網(wǎng)站設(shè)計水平和技術(shù)實力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設(shè)計、網(wǎng)絡(luò)營銷、VI設(shè)計、網(wǎng)站改版、漏洞修補等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設(shè)計的研究、對客戶形象的視覺傳遞、對應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。

控制反轉(zhuǎn)上層不依賴下層,而是依賴第三方依賴注入容器

上次的SimpleFactory就可以看做是第三方容器。學生student依賴SimpleFactory 而不直接依賴細節(jié)(Honor)

我們常用的第三方容器就是Unity,在VS中通過NuGet引入Unity的Dll,改造我們的Main方法

            static void Main(string[] args)
        {
            {
                BasePhone honor = SimpleFactory.CreatePhone();
                IPlayPhone student = SimpleFactory.CreateStudent();
                student.PlayPhone(honor);
                
                IUnityContainer unityContainer = new UnityContainer();
                unityContainer.RegisterType<IPlayPhone, Student>();
                var studentUnity = unityContainer.Resolve<IPlayPhone>();
                studentUnity.PlayPhone(honor);
                
                //Honor honor = new Honor();
                //Student student = new Student();
                //student.PlayPhone(honor);
                //student.PlayPhone(lumiaPhone);
                //student.PlayApplePhone(applePhone);
                //student.PlayGalaxy(galaxy);
                //student.PlayHonor(honor);
            }
            Console.ReadKey();
        }

再將代碼改造下增加IPerson,Iiphone,IGame

 public interface IPerson
    {
        Iiphone Iphone { get; set; }
        IGame Game { get; set; }
        
    }
  public class Student: BasePerson, IPerson
    {
        [Dependency]
        public Iiphone Iphone { get; set; }
        [Dependency]
        public IGame Game { get; set; }

    }
    public class Teacher: BasePerson, IPerson
    {
        [Dependency]
        public Iiphone Iphone { get; set; }
        [Dependency]
        public IGame Game { get; set; }
    }
 public interface Iiphone
    {
       void UsePhone();
    }
     
     public class Galaxy:BasePhone, Iiphone
    {
        public override void System()
        {
            Console.WriteLine("ANDROID");
        }
        public void UsePhone()
        {
            Console.WriteLine("Galaxy");
        }
    }
  public interface IGame
    {
        void Game();
    }
     public class SgsGame:IGame
    {
        public void Game()
        {
            Console.WriteLine("play 三國殺Game");
        }
    }
     public class LolGame:IGame
    {
        public void Game()
        {
            Console.WriteLine("Play LoLGame");
        }
    }
    
    
     static void Main(string[] args)
        {
            {
               

                IUnityContainer unityContainer = new UnityContainer();
              
                unityContainer.RegisterType<IPerson, Teacher>();
                unityContainer.RegisterType<Iiphone, Galaxy>();
                unityContainer.RegisterType<IGame, SgsGame>();
              
                var studentUnity = unityContainer.Resolve<IPerson>();
                studentUnity.Iphone.UsePhone();
                studentUnity.Game.Game();
            }

這里用的是依賴注入中的屬性注入,屬性注入在構(gòu)造函數(shù)注入之后執(zhí)行,而且需要增加[Dependency]這個特性,并且需要添加using Microsoft.Practices.Unity;的引用,所以大部分時候都用構(gòu)造函數(shù)注入更方便, 還有方法注入項目中用的很少,在方法上加[InjectionMethod]特性Unity控制反轉(zhuǎn)的方法是什么

unity提供更靈活的用配置文件注冊的方法 在項目配置文件增加

  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
  </configSections>
  <unity>
    <containers>
      <container name="defaultContainer">
        <register type="Abstract.IPerson,Abstract" mapTo="Abstract.Teacher, Abstract"/>
        <register type="Abstract.Iiphone,Abstract" mapTo="Abstract.Galaxy, Abstract"/>
        <register type="Abstract.IGame,Abstract" mapTo="Abstract.SgsGame, Abstract"/>
      </container>
    </containers>
  </unity>

則Main函數(shù)修改

 static void Main(string[] args)
        {
            {
                IUnityContainer unityContainer = new UnityContainer();
                UnityConfigurationSection configuration = (UnityConfigurationSection)ConfigurationManager.GetSection(UnityConfigurationSection.SectionName);
                configuration.Configure(unityContainer, "defaultContainer");
                
                var studentUnity = unityContainer.Resolve<IPerson>();
                studentUnity.OutputIdentity();
                studentUnity.Iphone.UsePhone();
                studentUnity.Game.Game();
            }
            Console.ReadKey();
        }

到此,相信大家對“Unity控制反轉(zhuǎn)的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

標題名稱:Unity控制反轉(zhuǎn)的方法是什么
文章位置:http://jinyejixie.com/article6/psgcog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站營銷、網(wǎng)站排名、搜索引擎優(yōu)化、品牌網(wǎng)站制作、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
都江堰市| 青神县| 璧山县| 南陵县| 海淀区| 大化| 巴东县| 肇庆市| 高碑店市| 寻甸| 安义县| 拉萨市| 石狮市| 武鸣县| 淮滨县| 山阳县| 楚雄市| 峨山| 楚雄市| 册亨县| 都匀市| 巫溪县| 丹棱县| 武宁县| 巫溪县| 五常市| 邳州市| 和田市| 毕节市| 通化县| 仁寿县| 北宁市| 肇庆市| 内丘县| 三穗县| 图片| 罗江县| 栾城县| 儋州市| 五大连池市| 侯马市|