2017-01-25 1 views
-1

Ich mache eine App mit Xamarin.forms pcl.Gibt es eine Möglichkeit, #define für die Unterscheidungs-Plattform zu verwenden? (Xamarin.Forms)

Ich weiß bereits, wir verwenden "Device.OS", um zu unterscheiden, welche Plattform ist, wenn wir pcl verwenden.

Aber in einigen Fällen muss ich definieren Header verwenden, um es zu archivieren, aber ich kann keine Lösung finden.

Ich möchte verschiedene abgeleitete Klasse für jede Plattform in einigen Fällen verwenden.

wie diese

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

Haben Sie die Dokumentation gelesen? Ich bin nicht sicher, was Ihre Frage ist: [Bedingte Zusammenstellung] (https://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_4_-_platform_divergence_abstraction_divergent_implementation/#Conditional_Compilation) –

+0

@JonDouglas Hallo Jon wieder, DavidS beantwortete meine Frage. :) –

+0

Und ich denke Beispielcode oben erklären, was ich tun möchte. –

Antwort

2

Nein, der ganze Sinn eines PCL ist, dass der Code einmal kompiliert wird, und genau die gleiche DLL wird sowohl von Android und iOS verwendet (oder was auch immer Plattformen, die Sie zielen). Also keine #if für die Ausrichtung auf verschiedene Plattformen.

Wenn Sie den größten Teil des Codes zwischen den Plattformen teilen müssen, aber mit plattformspezifischem Code, den Sie in Ihrem Beispiel oben haben, sollten Sie in shared projects schauen.

Wenn Sie eine PCL verwenden müssen, müssen Sie eine Möglichkeit finden, diese in einen benutzerdefinierten Renderer oder eine andere Methode zum Verschieben dieser Klasse in jedes plattformspezifische Projekt umzuwandeln.

+0

Danke! Es ist gut, das zu wissen. –

Verwandte Themen