有没有办法使用#define来区分平台?(Xamarin.Forms)

Is there way to use #define for distinguish platform?(Xamarin.Forms)

我正在使用 Xamarin.forms pcl.

制作应用

我已经知道我们在使用pcl的时候用"Device.OS"来区分是什么平台了。

但是有些情况下需要用define header来归档,但是找不到解决方法

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

像这样

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

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

如果您确实需要在平台之间共享大部分代码,但有一些 platform-specific 代码,就像您在上面的示例中所拥有的,您应该查看 shared projects.

如果您需要使用 PCL,那么您需要找到一种方法将其转换为自定义渲染器,或者找到其他方法将 class 移动到每个 platform-specific项目。