我的大部分平台特定代码应该放在 MVVM 中的什么位置? (旁观)

Where should most of my platform specific code be in MVVM? (Beside View)

我正在使用带有 MVVMLight 的 Uno-Platform 来构建我的项目。 我应该将特定于平台的代码放入 ViewModel 中吗?还是应该主要在 Utils/Services?

我建议将特定于平台的代码放在实用程序 类 或服务中。将该代码放在 ViewModel 中会使重用变得更加困难,并可能使 ViewModel 无法 运行 测试。

理想情况下(非强制)您需要使用接口和依赖项注入,为您要支持的每个平台提供一个实现,并尝试为所有平台实现相同的接口。这样,您的 ViewModel 将没有 #if PLATFORM_A 代码。

旁注,请记住 Uno 平台已经通过 UWP API 提供了大量平台抽象。像地理定位器、传感器等