我们在使用Xamarin跨平台解决方案的过程中,其中超过80%的业务代码是可以共写在Shared Project中以供Android、IOS、UWP等平台共用。但由于各平台的一些API调用的方式不同,因此,需要将这些不同的业务代码区分开来写,那具体有哪些方法可以实现代码分离呢?Xamarin官网给出以下几种方法:
方法一:Conditional Compilation -- 选择性编译,用#if #elif 等在Shared Project将不同平台的代码分开
#if __IOS__ ........//这的代码只在IOS下编译 #endif #if __ANDROID__ ........//这的代码只在Android下编译 #endif
方法二:Class Mirroring,简单来说,就是在Shared Project 中定义接口(并非真正的Interface),然后在IOS和Droid的Projects中实现
如在Shared Project中定义如下代码
void Main(){ Alert.Show() }
在IOS 项目中实现如下
internal class Alert() { public void Show() { ................//你自己的代码 } }
在Android 项目中实现如下
internal class Alert() { public void Show() { ................//你自己的代码 } }
方法三:Partial Class And Method --通过部分类来实现
Shared Project中:
partial class HelloWorld() { .............//共享的代码 }
IOS Project中:
partial class HelloWorld() { .............//IOS项目中的实现代码 }