[英]Can't add System.Net.Sockets to a Xamarin PCL project can this be done using “Bait and switch” advanced PCL approach?
我無法將System.Net.Sockets
添加到Xamarin PCL項目中,可以使用“誘餌和開關” AKA高級PCL方法來完成此操作嗎?
System.Net.Sockets
可用於Xamarin.iOS和Xamarin.Android項目
是的,這是可能的。 我們使用的方法是制作單獨的iOS和Android類庫,這些庫將保存從PCL無法訪問的非UI類型的代碼,並使該代碼實現可從共享PCL層訪問的接口。
例如:
在Shared PCL項目中創建ISocketHandler,它具有OpenConnection方法。
創建一個iOS.Framework類庫,並在其中創建一個iOSSocketHandler類,該類實現ISocketHandler並具有有關在Xamarin iOS中使用套接字的平台特定代碼。 對Android執行相同的操作。
然后,您需要進行依賴項注入,以便每當您的共享代碼要求ISocketHandler時,它們都將獲得適當的實現。 我們使用Unity,並在Main.cs中像這樣注冊:
IocContainer.GetContainer().RegisterType<ISocketHandler, iOSSocketHandler>();
然后,您可以在共享代碼中請求實現,如下所示:
IocContainer.GetContainer().Resolve<ISocketHandler>();
還有其他策略可以滿足您的需求,但這是我們在大多數情況下使用的策略。
另外,在嘗試自己執行此操作之前,您可能需要檢查一下https://github.com/rdavisau/sockets-for-pcl
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.