gpt4 book ai didi

dependencies - 非 PCL 依赖 w/MvvmCross

转载 作者:行者123 更新时间:2023-12-04 21:40:27 25 4
gpt4 key购买 nike

我们的应用程序有几个不能作为 PCL 库使用的依赖项(例如 RestSharp、Websocket4Net、Reactive Extensions),但可用于我们计划面向的每个平台。在 MvvmCross 中处理这种情况的最佳方法是什么?什么最简单?

最佳答案

有多种方法可以解决这个问题。

  • 如果问题真的很大,您可以放弃 PCL 方法,并使用多个平台特定的类库。这些库可以引用 MvvmCross PCL 和平台特定版本的 RestSharp 等。有关其优缺点的讨论,请参见 - What is the advantage of using portable class libraries instead of using "Add as Link"?

    一般来说,如果我必须包含一个非常大的遗留库(例如,一个客户有一个与 3 个独立的 WCF 服务对话的大型业务逻辑库......),我现在只采用这种文件链接方法......)

  • 您提到的一些库可能已经有 PCL 端口和/或替代品 - 例如

    许多开源作者现在都提供 PCL 版本 - 请查看。

  • 您通常可以将原生库抽象到接口(interface)后面,然后您可以在运行时注入(inject)该库的正确版本。这就是插件在 MvvmCross 中所做的事情

    你可以看到https://github.com/slodge/MvvmCross/tree/v3/Plugins/中内置了多少插件

    此示例中有一个非常简单的插件 - https://github.com/slodge/MvvmCross-Tutorials/tree/master/GoodVibrations

  • 您可以使用的另一种方法是提供“引用程序集”——这些是仅包含类型和接口(interface)签名的 PCL 程序集(即它们仅提供 NotImplementedException 实现)。您的 PCL 项目链接到这些程序集,而您的 UI 项目链接到实际程序集。在构建时,您的 PCL 核心将根据签名进行构建,但 MSBuild/XBuild 将确保实际引入正确的 native 库。

    我没有在实践中使用过这最后一种技术。我更喜欢接口(interface)路由,因为它可以带来更好的架构。但是,当前的 MvvmCross Nuget 包中使用了此技术 - 所以我知道它有效。

关于dependencies - 非 PCL 依赖 w/MvvmCross,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com