2017-01-25 3 views
-1

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

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

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

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

как этот

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

Вы прочитали документацию? Я не уверен, в чем ваш вопрос: [Условная компиляция] (https://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_4_-_platform_divergence_abstraction_divergent_implementation/#Conditional_Compilation) –

+0

@JonDouglas Привет, Джон, DavidS ответил мой вопрос. :) –

+0

И я думаю, пример кода выше объясняет, что я хочу делать. –

ответ

2

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

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

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

+0

Спасибо! хорошо знать этот факт. –

Смежные вопросы