【问题标题】:Servicestack monotouch DLL built using PCL使用 PCL 构建的 Servicestack monotouch DLL
【发布时间】:2013-11-03 10:17:41
【问题描述】:

我正在将解决方案迁移到 MVVMCross,但 ServiceStack 客户端库很难使用。

如何将 ServiceStack 客户端 DLL 构建到 PCL 库中以在 Xamarin Studio 中使用,使其成为多平台?

这里没有什么值得注意的,除非我错过了:https://github.com/ServiceStack

【问题讨论】:

    标签: xamarin.ios servicestack xamarin mvvmcross portable-class-library


    【解决方案1】:

    您可以克隆 ServiceStack 项目、创建 PCL 项目、链接文件、构建并查看缺少的内容。我确信目前还没有 PCL 是有原因的,但如果你碰巧得到它,请提出拉取请求。

    由于您使用的是 MvvmCross,另一个选择是为您的 API 创建一个插件,然后在平台特定项目中引用 ServiceStack 库。

    您也可以使用 MvvmCross RestClient 并进行与 ServiceStack 客户端相同的调用。

    edit:第 4 种选择是使用新的 HttpClient。一个来自 Xamarin,另一个来自 MS(如果您的目标是 Win)。添加PortableRest,您就可以将大部分代码保存在可移植文件中。我说的最多是因为您可能必须抽象出 HttpClient。我已经使用过这种方法几次并且效果很好。 PortableRest 有一个fork 增加了文件上传。

    【讨论】:

    • 伟大的建议德里克。第一个似乎有点乏味,但我想我可能不得不在某个时候,但我在 Xamarin Studio 中编码并且没有个人完整的 VS 许可证,对于这个项目,所以可能是耗时且不必要地涉及 。第二个是可以实现的,但我仍然觉得重复的逻辑有点脏。根据帖子,第三个选项还需要自定义平台特定的实现。但是,如果有人确实实现了 Servicestack 的 PCL 库,那将是最好的!
    • 我想我记得 Demis 说过他不会为 SS 实施 PCL,但那是前一阵子了。添加了第四个选项。
    【解决方案2】:

    我遇到了一些与 .net 相关的问题(例如,.net 4.5 中缺少 Timer 类)。所以我只是创建了一个不同的库,然后为计时器类创建了一个包装器。这是一种方法。将您的 http 代码放在单独的库中将使项目更易于维护。

    更进一步的方法是使用 mvvmcross 依赖注入来实例化您在另一个库中创建的类。这样,即使您正在实例化非 PCL 代码也没关系,事情就可以正常工作。不过,您必须在单独的 PCL 库中声明所有接口。

    【讨论】:

      猜你喜欢
      • 2013-01-23
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2015-05-29
      相关资源
      最近更新 更多