簡體   English   中英

無法將System.Net.Sockets添加到Xamarin PCL項目中,可以使用“誘餌和切換”高級PCL方法來完成嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM