91手机视频在线-91手机视频在线观看-91手机在线-91手机在线播放-91手机在线观看

完善主體資料,免費(fèi)贈(zèng)送VIP會(huì)員!
* 主體類型
* 企業(yè)名稱
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學(xué)歷
* 工作性質(zhì)
請(qǐng)先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領(lǐng)完即止!

下載app免費(fèi)領(lǐng)取會(huì)員

NULL

ad.jpg

二次開(kāi)發(fā)教程:C# 通過(guò)MVVMLight探索IOC

發(fā)布于:2019-07-25 15:19:58

網(wǎng)友投稿

更多

使用MVVMlight創(chuàng)建一個(gè)項(xiàng)目以后,MainViewModel的構(gòu)造函數(shù)是這樣的:


        public MainViewModel(IDataService dataService)

        {

            _dataService = dataService;

            _dataService.GetData(

                (item, error) =>

                {

                    if (error != null)

                    {

                        // Report error here

                        return;

                    }

                    WelcomeTitle = item.Title;

                });

        }


它依賴于一個(gè)實(shí)現(xiàn)了IDataService 的類,但是在使用的時(shí)候,代碼確實(shí)這樣的:


        public MainViewModel Main

        {

            get

            {

                return ServiceLocator.Current.GetInstance<MainViewModel>();

            }

        }


如果我們按照一般邏輯來(lái)寫(xiě),應(yīng)該是寫(xiě)成這樣:


        public MainViewModel Main

        {

            get

            {

                IDataService service = new DataService();//這是一個(gè)實(shí)現(xiàn)了IDataService 的類

                return new MainViewModel(service);

                //return ServiceLocator.Current.GetInstance<MainViewModel>();

            }

        }


那這是怎么回事呢?


在使用這個(gè)ViewModel之前SimpleIoc.Default還做了兩件事:


SimpleIoc.Default.Register<IDataService, DataService>();//這個(gè)就應(yīng)該是所謂的依賴注入,DataService是要?jiǎng)?chuàng)建MainViewModel需要的一個(gè)參數(shù),一個(gè)依賴項(xiàng)


SimpleIoc.Default.Register<MainViewModel>();



而ServiceLocator.Current.GetInstance<MainViewModel>();


所做的是使用MainViewModel的 ConstructorInfo來(lái)創(chuàng)建(第一次Get的時(shí)候創(chuàng)建),而調(diào)用 ConstructorInfo的時(shí)候,我們會(huì)發(fā)現(xiàn)它需要一個(gè)參數(shù),而這個(gè)參數(shù)的class


的構(gòu)造函數(shù)是沒(méi)有參數(shù)的,應(yīng)為我們之前做過(guò)Register操作,所以可以通過(guò)Register時(shí)候傳的接口和類,來(lái)找到這個(gè)類,并使用反射來(lái)創(chuàng)建一個(gè)對(duì)象供MainViewModel的


ConstructorInfo來(lái)使用,而創(chuàng)建好的MainViewModel會(huì)保存在SimpleIoc.Default里,下次使用就不必重新創(chuàng)建(這個(gè)應(yīng)該是服務(wù)定位器模式)

本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

未標(biāo)題-1.jpg

上一篇:二次開(kāi)發(fā)教程:MVVMLight的Messenger

下一篇:二次開(kāi)發(fā)教程:C# udp小程序

主站蜘蛛池模板: 台湾一级毛片免费播放 | 国产精品白嫩在线观看 | 日本特黄在线观看免费 | 欧美一区二区三区在线观看不卡 | 午夜男人视频 | 亚洲日韩精品欧美一区二区 | 综合九九 | 日本一级大黄毛片免费基地 | 亚洲欧美日韩在线不卡 | 色噜噜狠狠一区二区三区 | 手机视频在线观看 | 免费的全黄一级录像带 | 成年女人免费看片 | 艹逼视频免费 | 九九热视频免费 | 97se狠狠狠狠狠亚洲综合网 | 国产a不卡片精品免费观看 国产a毛片高清视 | 中文字幕小明 | 国产精品欧美亚洲韩国日本99 | 国产在线精品一区二区中文 | 免费观看成人欧美1314www | 一级片在线免费观看 | 亚洲人成黄网在线观看 | 久久久青草青青亚洲国产免观 | 国产麻豆高清视频在线第一页 | 国产精品美女自在线观看免费 | 国内在线播放 | wwwww色| 国产午夜三级 | 国产1区在线观看 | 亚洲国产天堂久久综合226 | 精品美女在线 | 中文字幕h | 伊人色综合琪琪久久社区 | 尤物视频在线观看网址 | 欧美一级久久 | 丁香婷婷开心激情深爱五月 | 麻豆国产入口在线观看免费 | 国产精品视频福利一区二区 | 国产精品短篇二区 | 色综合天天综合网国产成人网 |