In my opinion, a great professional using one single environment (like C # /. NET) is code portability. And cool things like LINQ, when you get used to it, you cannot live without it. However, several mobile OS (iOS, Android, WP7) are very different from the UI.
And, if I'm not mistaken about your application, it got a fair share of user interface interactions if it should run on a mobile device. Most mobile apps are like 80% UI code.
Thus, you still write a separate set of user interface code for each platform - for example, you will write in Silverlight WP7 (and in its entirety WPF), you will write completely different code sets for iOS in Cocoa (IB, Views, controllers and other), you will write another completely different set of code for Android.
My experience has always been that writing good user interface code on any platform requires a lot of experience - for example, learning WPF / SL is already a nightmare that throwing Cocoa Touch and all the mess in Android. Of course, you can write three sets of user interfaces that look and feel fairly similar, but most likely you will try so hard to reuse the code and have common data structures that your user interface will ultimately be lower compared to dedicated applications - - and in this world of mobile applications today, a non-super (not to mention parallel) user experience means death for your application.
In addition, all three mobile environments have different connectivity paradigms, as well as multimedia paradigms. You end up writing three versions and learning three environments, although you write in the same language that you are familiar with.
The most that you are going to reuse are server modules. Decision making mechanisms, search procedures, data management, etc. And even that will be problematic because you will have to make compromises in your data structures to simplify integration with three different sets of user interface code running on three different interface paradigms. For example, you use DependencyObjects to use to bind to Silverlight views in MVVM models? If you do this, this will not work with the Cocoa MVC model, and you will have to code these bindings separately.
And since not all mobile environments allow you to use the full range of functions, for example, MonoTouch for iOS does not have common designs that cannot be determined at compile time. You essentially use a very small subset of .NET (and you must constantly remind yourself what functionality you can use there) so that you can run them on three different platforms without significant changes.
Now an image that has all of these limitations when you write for the WP7 platform, which supports the full range of .NET features. I donβt know about you, but Iβll lose my mind. And your WP7 app will never be close to being competitive with other apps out there.
In my opinion, pain and compromises are not worth it. As a result, you get three so-so applications that will not like any of the platforms.
If all your kindness lies in the logic of your application, and it is so good that people will ignore user interface problems in order to gain access to the functionality of your application. In my experience, this almost never happens.