In my push to get our fundamental libraries up and working on Mono for Android we’ve added support for OpenNETCF Extensions and OpenNETCF IoC. What that means is that now you can have a common code for a lot of application infrastructure that works on the Compact Framework, the desktop, Windows Phone, MonoTouch for iOS and Mono for Android. So you can now create a single, common code base for your applications that includes data access, event aggregation, dependency injection and inversion of control.
We’ve started doing work creating client applications for a few of our products to run on Android and iOS devices. Since I’m a huge fan of code re-use, I took the time this week to port the OpenNETCF.ORM over to Xamarin’s Mono for Android using a SQLite backing store implementation. The biggest challenge was that SQLite doesn’t support TableDirect not ResultSets, so it took a bit of code to get running. Still, it took only a day and a half to get what I feel is pretty good support up and running. I’ve not yet tested it through all of the possible permutations of queries, etc, but basic, single-table CRUD operations all test out fine.
So now a single code base can work on the Windows Desktop, Windows CE and Android (probably iOS and Windows Phone as well with very little work). If you’re doing MonoDroid work, give it a try.
Recently, over on the IoC Project Discussions, someone asked if the library supported Mono/MonoTouch. Well it really hadn’t occurred to me to even try, since I didn’t own a Mac and the only Linux box in the house is too small a weak to even attempt development on. In theory, however, it should work, right? I mean it’s just C#. I had recently ported IoC to Windows Phone 7, so I figured why not?
I picked up a Macbook on eBay, and after spending about half a day in frustration over the unfamiliar Mac user interface (never liked it, still don’t) and another half day of trying to figure out how to build a project and wire up iPhone UI elements with the underlying code I’m happy to show this:
I understand that it’s really simple code that hardly tests out the entire library, but the code modifications to get it working were pretty minor, so I’m fairly confident it will all work.
At any rate, the updated code is now checked in and released. If you use it, let me know.