gpt4 book ai didi

c# - 如何减少特定于平台的项目之间的代码重复量?

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:51 25 4
gpt4 key购买 nike

我正在开发 Xamarin.Forms 解决方案,该解决方案使用 PCL 库在我的 Android 和 iOS 项目之间共享代码。这在很大程度上取得了很好的效果,因为大多数 UI 和逻辑代码都可以保存在一个地方。当然,我创建了一些特定于平台的类并使用 DependencyService 链接到 PCL,这对大多数类来说都很好,因为平台之间的代码有很大不同(例如,UI 布局/外观) .

但是,有一个类子集使用了 PCL 项目无法使用的各种命名空间(尤其是 System.Data 命名空间)。为了绕过这个限制,我不得不为每个类编写一个 DependencyService。我担心的是 Android 和 iOS 之间的代码完全相同,只是少了一两行。代码非常复杂,我不想在需要时记得更新它两次

考虑到由于必要的命名空间不可用而无法将代码放入 PCL,有没有办法可以减少这两个项目之间重复的代码量?

最佳答案

我建议在您的架构中插入一个共享项目。对于需要依赖于平台和/或使用平台 API 的代码,我将继续使用由接口(interface)抽象的平台类。但是,如果您有可以在这些平台类之间共享的代码,您可以将该代码放在共享项目中并让平台类引用它。

我以前在 SQlite Access 中使用过这种模式。我需要低级别的 ADO.net 支持,这意味着手动将数据映射到 SqliteDataReader 之外。这个逻辑在平台之间很常见,但不能进入 PCL。所以我有一个用于数据映射的 SharedProject,我的平台数据库实现引用了该项目。

请参阅下面的示例类图。

enter image description here

关于c# - 如何减少特定于平台的项目之间的代码重复量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35613348/

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