使用PCL构建的Servicestack monotouch DLL

4
我正在将一个解决方案迁移到MVVMCross,但是ServiceStack客户端库很难使用。
如何将ServiceStack客户端DLL构建到PCL库中,以便在Xamarin Studio中进行多平台使用?
除非我错过了什么,否则这里没有什么值得注意的:https://github.com/ServiceStack
2个回答

3
你可以克隆ServiceStack项目,创建PCL项目,链接文件,构建并查看缺少什么。我相信没有PCL的原因是有道理的,但如果你成功了,请发起一个pull request。
由于您正在使用MvvmCross,另一种选择是为您的API制作插件,然后在特定于平台的项目中引用ServiceStack库。
您还可以使用MvvmCross RestClient,并进行与ServiceStack客户端相同的调用。
编辑:第四种选择是使用新的HttpClient。来自Xamarin的和来自MS的(如果您的目标是Win)。添加PortableRest,您将能够在可移植设备上保留大多数代码。我说“大多数”,因为您可能必须抽象出HttpClient。我已经使用过这种方法几次,效果很不错。PortableRest的分支添加了文件上传。

很棒的建议Derek。第一个似乎有点繁琐,但我猜我可能必须在某个时候这样做,但我正在Xamarin Studio中编码,并没有个人完整的VS许可证,因此可能会非常耗时且牵扯不必要的工作<崩溃>。第二个是可行的,但我仍然觉得重复的逻辑有点肮脏。根据帖子,第三个选项也需要自定义特定于平台的实现。但如果有人实现了Servicestack的PCL库,那将是最好的!!<交叉手指> - fractal
我记得Demis说他不打算为SS实现PCL,但那是一段时间以前的事了。添加了第四个选项。 - Derek Beattie

1
我遇到了一些与 .net 相关的问题(例如,在 .net 4.5 中缺少 Timer 类)。所以我创建了一个不同的库,然后创建了一个计时器类的包装器。这是一种解决方法。将你的 http 代码放在一个单独的库中将使项目更易于维护。
更进一步的一步是使用 mvvmcross 依赖注入来实例化你在其他库中创建的类。这样,即使你实例化的是非 PCL 代码,也没有关系,它只是起作用。但你需要在一个单独的 PCL 库中声明所有接口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接