Xamarin.Essentials 學習

前面提到xamarin自定義類庫在IOS下運行無法實現接口,我是建立了.netstandard,android,ios三個類庫,用的xamarin.forms.dependency去實現接口。

在網上找了許多資料,未能解決,最後在逛官網的時候發現了Xamarin.Essentials,功能有些就是我自定義去實現的。

我就想着這些類庫是怎麼實現的,就去git將工程下載下來看了下,

並沒用xamarin.forms.dependency在不同平臺下去實現接口。

xamarin.Essentail 就是一個項目,將.netstandard, android ,ios需要用到的基礎dll都引用進來了。----我嘗試過自己建立一個這樣的項目,但是沒成功,到現在也不知道怎麼做到建立一個工程,然後引用多個平臺的dll文件,最後的辦法就是直接拷了項目添加到我自己的項目中,然後再將自己想要實現的功能在這裏直接增加。

通過查看項目文件,可以看到targetframeworks的內容和引用是一一對應的,於是我將uwp的引用刪除了。

 

然後看了幾個功能的實現。文件結構是固定的。一個類去掉uwp後是四個文件,固定格式,類名.shared/netstandard/android/ios.cs。圖中是我自己實現的圖片剪切成圓形的圖片--參考ffimage庫。

其中shared就是public出來給xamarin.form使用的,可以引用的是.netstandard聲明的方法,可以進行進一步的處理。.netstandard和Android,ios則是同類名,同方法,.netstandard只有方法名,沒有具體實現,有一個異常處理(如果沒有實現平臺功能的話)。android和ios則是具體實現。

特別注意的是.netstandard這個文件,需要在屬性裏面更改生成,否則無法引用對應的dll。

 

2019-7-13

此工程裏面如何做到正確引用平臺對應的dll,添加引用後,會在所有平臺下都增加了引用文件,生成會出錯。

需要在項目文件中編輯,項目文件中會發現一個itemgroup下有我們添加的引用信息,那麼將信息剪切到比如安卓的節點下就OK了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章