【问题标题】:Can I share UWP viewmodels with xamarin iOS?我可以与 xamarin iOS 共享 UWP 视图模型吗?
【发布时间】:2020-07-24 21:24:45
【问题描述】:

Xamarin 和 UWP 之间实际共享的代码量是多少?

我的应用程序具有以下层: 1. UWP平台特定api 2.基于这些api的消息协议 3. 服务 4. 视图模型 5. Xaml Views 与 INotifyPropertyChanged 和 ICommand 通信

我知道显然 1(平台特定的 api)和 5(xaml 视图)不能共享。第 2 层和第 3 层应该没问题。 ViewModel 呢?我认为应该可以使用薄层 viewModel 适配器来实现这一点,这现实吗?

我也不打算使用 xamarin.forms。

【问题讨论】:

  • 这取决于...但是,当您的 iOS 应用程序具有与 UWP 应用程序相同的视图逻辑时,是的,它们可以共享

标签: xamarin uwp xamarin.ios xamarin.mac


【解决方案1】:

答案取决于您的应用程序。

UWP 有许多在 Xamarin 上不起作用的特定 API。它们不仅与视图相关,还可以与视图模型代码相关。如果您的视图模型是一个单独的 .Net 标准项目,那么您可以完全重用它,但由于 UWP 应用程序并非总是如此,您可能只能重用大部分代码。

第二部分归结为在 iOS/macOS 项目中实际使用此视图模型。由于您不想使用 XAML (Xamarin.Forms),因此没有提供数据绑定。基本上你必须手动完成整个数据绑定。一些 MVVM 框架可能会在这方面为您提供帮助,但如果您问我,它们应该被称为“帮助者”,而不是框架。

【讨论】:

  • 如果您的 ViewModel 包含平台相关代码,那么您做错了。
  • @SirRufo 不在 UWP 上。例如,有用于解析 RSS 提要的 UWP 平台特定代码,这应该属于 viewmodel。您可能会争辩说,微软将这个平台具体化是做错了什么,但这不在此处讨论的范围内。
  • 不,Application-Layer 定义了一个 RSSParsingService 接口,ViewModel 可以使用该接口,但具体服务在 Infrastructure-Layer 或 UWP 项目中实现(选择最适合的)
  • @SirRufo 如果您最初的项目范围是支持 UWP,那么不这样做并没有错。同样,所有 Microsoft 示例都是这样工作的。如果您想证明您可能有单独的意见,您可以。但它不是 UWP 开发标准。
  • 冷静下来。我知道理论和实践之间存在差距。许多应用程序和示例(甚至来自 MS)都在使用捷径,只是为了完成工作并打破理论。但没有理由这样做,除非设计时间太少。顺便说一句:我也时常使用这样的捷径,但我知道这些只是捷径,而不是应该的。所以我知道我什么时候做错了,我知道为什么(更少的时间)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-05
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多