我目前有一个原生的Android和iOS库,其中包含由模型(最小的部分),视图和控制器(最大的部分)组成的不同“模块”。
我想开始使用xamarin编写应用程序而不会丢失我在这个库上所做的所有工作。但似乎本机库绑定更适合实用程序库,或者只包含1部分MVC组件的库,而不是相互依赖的3个。
因此,在阅读了关于跨平台开发和本机库绑定的Xamarin文档之后,我认为我应该使用Xamarin C#库重写我库中的所有模型部分,我会在iOS上删除Core Data,在Android上删除ORM Lite ,而我会使用提供的SQLite库。这项工作听起来并不大,所以这不是问题(从长远来看,它会减少维护工作)。但现在出现了问题/问题,当我的模型将是C#类时,我如何能够在我的控制器中使用这些模型仍然使用Obj-C和Java编写?我可以从我可以在iOS / Android代码中导入的C#模型类中获取头文件吗?或者我是否还需要使用C#重写控制器(对我来说,不使用Xamarin)?
我愿意接受任何可以避免失去多个月工作的迁移建议/策略,所以如果你有一个,请随时回答:)
答案 0 :(得分:1)
我目前有一个原生的Android和iOS库,其中包含由模型(最小的部分),视图和控制器(最大的部分)组成的不同“模块”。
这可能意味着您当前有两个库,一个用于iOS,一个用于Android。一个用Objective-C编写,一个用Java编写。
我想开始使用xamarin编写应用程序而不会丢失我在这个库上所做的所有工作。但似乎本机库绑定更适合实用程序库,或者只包含1部分MVC组件的库,而不是相互依赖的3个。
是什么让你这么想?您可以绑定要绑定的任何内容。而且您不需要先绑定所有内容。如果现在你只想绑定本地库中处理UI的一些部分,那么跳过其余部分。您可以稍后添加绑定。
我认为我应该使用Xamarin C#库重写我库中的所有模型部分,我会在iOS上删除Core Data,在Android上删除ORM Lite,而是使用提供的SQLite库。
这是一种有效的方法。但是,您将无法继续使用本机代码。没有办法从ObjC谈到C#。反之亦然。即使有可能:你必须改变你的控制器与SQLite.Net而不是CoreData交谈,或者添加一个抽象层,反过来你必须在C#方面绑定和实现。所有这些可能比坚持使用本机版本或重写C#中的所有内容更多。
我可以从可以在iOS / Android代码中导入的C#模型类中获取头文件吗? 不,你不能。
或者我是否还需要使用C#重写控制器(这对我来说是不合法使用Xamarin)? 您可以选择:
可能还有一个关于绑定的注释:绑定并不意味着交换部分本机功能。它们将本机功能传输到托管世界。它们不会让您选择两全其美,然后创建一个所有交易解决方案的杰克。 如果你留在原生世界,你最终会得到相同的结果:想想如果你想从iOS上的CoreData更改为基于Json的存储,你必须做什么?您必须触摸所有控制器,除非您准备好所有内容以支持数据层的抽象。