【问题标题】: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 项目中,这可以使用“诱饵和切换”高级 PCL 方法来完成吗?
【发布时间】:2016-06-08 14:54:46
【问题描述】:

我无法将 System.Net.Sockets 添加到 Xamarin PCL 项目中,这可以使用“诱饵和切换”AKA 高级 PCL 方法来完成吗?

System.Net.Sockets 可用于 Xamarin.iOS 和 Xamarin.Android 项目

Explanation of Bait and switch

【问题讨论】:

    标签: c# sockets xamarin xamarin.forms portable-class-library


    【解决方案1】:

    是的,这是可能的。我们使用的方法是制作单独的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多