2017-01-25 2 views
-1

Je fais des applications avec Xamarin.forms pcl.Est-il possible d'utiliser #define pour distinguer la plate-forme? (Xamarin.Forms)

Je sais déjà que nous utilisons "Device.OS" pour distinguer quelle plateforme est quand nous utilisons pcl.

Mais dans certains cas, j'ai besoin d'utiliser define header pour l'archiver, mais je ne trouve pas de solution.

Je souhaite utiliser une classe dérivée différente pour chaque plate-forme dans certains cas.

comme celui-ci

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

Avez-vous lu la documentation? Je ne suis pas sûr de savoir quelle est votre question: [Compilation conditionnelle] (https://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_4_-_platform_divergence_abstraction_divergent_implementation/#Conditional_Compilation) –

+0

@JonDouglas Bonjour Jon, DavidS répondu à ma question. :) –

+0

Et je pense que l'exemple de code ci-dessus explique ce que je veux faire. –

Répondre

2

Non, le point de l'ensemble d'un PCL est que le code est compilé une fois, et la même DLL exacte est utilisé par Android et iOS (ou les plates-formes que vous ciblez quelles que soient). Donc pas de #if pour cibler différentes plateformes.

Si vous avez vraiment besoin de partager la majeure partie du code entre plates-formes, mais avec un code spécifique à la plate-forme comme dans votre exemple ci-dessus, vous devriez regarder dans shared projects.

Si vous devez utiliser un PCL, vous devez trouver un moyen de le transformer en un moteur de rendu personnalisé, ou une autre approche pour déplacer cette classe dans chaque projet spécifique à la plate-forme.

+0

Merci! c'est bon de savoir le fait. –