您好我正在尝试创建一个可以在Android,UWP和IOS上运行的NoSQL数据库,用于我自己的项目,并在其他人的nuget上发布。
所以我需要能够在所有这些平台上创建,删除,写入和读取文件。
我正在寻找一种方法来在PCL本身中执行所有这种特定于平台的编码,或者链接到一个源,该链接解释了如何制作和发布便携式友好的API,或者只是如何编写平台特定的代码。便携式课程本身。
顺便说一下,我已经尝试使用#if UWP #endif并制作了一个测试项目,但由于它是一个可移植的类库,它只是在运行时忽略它。
示例:
public void CreateFile(string path) {
if (Platform == UWP) {
}
if (Platform == Android) {
//Create file for UWP
}
if (Platform == IOS) {
//Create file for UWP
}
}
答案 0 :(得分:4)
如果您拥有每个平台的特定代码,那么您可以使用Bait & Switch trick执行此操作,这是许多Xamarin插件中使用的方法。
基本上,你创建了一个Abstractions项目和一个PCL的实现项目,你将分别使用它来进行调用的接口和类(当然还有一个单例或者创建上述类的东西,只需要新的类())。
然后在每个平台特定项目中,您实现抽象项目中定义的抽象,将SAME名称空间和类名称保持为PCL实现中定义的名称,并且已完成。
最后你创建了你的nuget,你就可以了。
我建议您查看来自James Montemagno的链接,并解释一下。