【问题标题】:Is there way to use #define for distinguish platform?(Xamarin.Forms)有没有办法使用#define 来区分平台?(Xamarin.Forms)
【发布时间】:2017-01-26 07:48:49
【问题描述】:

我正在使用 Xamarin.forms pcl 制作应用程序。

我已经知道我们使用“Device.OS”来区分我们使用pcl时是什么平台。

但在某些情况下,我需要使用define header来归档它,但我找不到解决方案。

在某些情况下,我想为每个平台使用不同的派生类。

喜欢这个

#if __ANDROID__
    public class SkiaView_BG : SKCanvasView
#else
    public class SkiaView_BG : SKGLView
#endif

【问题讨论】:

  • 您阅读过文档吗?我不确定你的问题是什么:Conditional Compilation
  • @JonDouglas 你好 Jon,DavidS 回答了我的问题。 :)
  • 我认为上面的示例代码解释了我想要做什么。
  • @BrightLee Android 视图需要是画布视图,而 iOS 是 GL 视图有什么原因吗?安卓有什么问题? - 透明度?我认为 Android 有点受限 (stackoverflow.com/questions/2034822/…),因为您可以在所有物体下方有一个不透明的 GL 表面,或者在所有物体上方有一个透明的 GL 表面。中间什么都没有。 github.com/mono/SkiaSharp/issues/223
  • 感谢@Matthew 的回复。

标签: xamarin xamarin.forms skiasharp


【解决方案1】:

没有。 PCL 的全部意义在于代码编译一次,并且 Android 和 iOS(或您的目标平台)使用完全相同的 DLL。因此没有针对不同平台的#if。

如果您确实需要在平台之间共享大部分代码,但在上面的示例中使用了一些特定于平台的代码,您应该查看shared projects

如果您需要使用 PCL,那么您需要找到一种方法将其转换为自定义渲染器,或者找到其他方法将该类移动到每个特定于平台的项目中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多