1、簡介
軟件開發(fā)有一個(gè)原則叫【依賴倒置Dependence Inversion Principle 】
A.高層次的模塊不應(yīng)該依賴于低層次的模塊,他們都應(yīng)該依賴于抽象。
B.抽象不應(yīng)該依賴于具體實(shí)現(xiàn),具體實(shí)現(xiàn)應(yīng)該依賴于抽象。
Xamarin.Forms在面對無法實(shí)現(xiàn)的平臺特有功能時(shí)就是使用以上原則設(shè)計(jì)一個(gè)叫【DependencyService】的功能。DependencyService的目的就是讓PCL共通代碼可以調(diào)用與平臺相關(guān)的功能,它使Xamarin.Forms能像原生應(yīng)用一樣做任何事情!
2、工作原理
接口:定義功能接口在PCL類庫或者共享類庫
接口實(shí)現(xiàn):各個(gè)平臺實(shí)現(xiàn)接口功能
注冊:各個(gè)平臺實(shí)現(xiàn)接口的類庫注冊DependencyAttribute屬性
調(diào)用:PCL類庫或者共享類庫調(diào)用DependencyService.Get<接口>()方法獲取平臺實(shí)例對象
稍微看看原代碼了解Xamarin.Forms如何實(shí)現(xiàn)依賴注入
DependencyAttribute.cs文件,定義了程序集屬性標(biāo)簽:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26