Есть ли способ использовать #define для различения платформ? (Xamarin.Forms)

Я делаю приложение с использованием Xamarin.forms pcl.

Я уже знаю, что мы используем Device.OS, чтобы различать платформу, когда мы используем pcl.

Но в некоторых случаях мне нужно использовать заголовок define для его архивирования, но я не могу найти решение.

В некоторых случаях я хочу использовать разные производные классы для каждой платформы.

нравится

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

person Bright Lee    schedule 25.01.2017    source источник


Ответы (1)


Нет. Вся суть PCL в том, что код компилируется один раз, и одна и та же DLL используется как Android, так и iOS (или любыми другими платформами, на которые вы нацеливаетесь). Таким образом, нет #if для таргетинга на разные платформы.

Если вам действительно нужно разделить большую часть кода между платформами, но с некоторым кодом для конкретной платформы, как в приведенном выше примере, вам следует изучить общие проекты.

Если вам нужно использовать PCL, вам нужно найти способ превратить его в настраиваемое средство визуализации или другой подход для перемещения этого класса в каждый проект, зависящий от платформы.

person DavidS    schedule 25.01.2017