从Java代码使用C#库和Mono for Android?

有可能从Java代码使用带有Mono for Android的C#库吗? 可以使用mtouch命令中的“–xcode”标志从Objective-C到C#(MonoTouch)执行此操作。 但是Mono for Android有一个等价的东西吗?

有理由这样做吗?

谢谢!

Gwennin

[是否有可能]从Java代码中使用C#库和Mono for Android?

是。 每个Java.Lang.Object子类都有一个在构建时生成的Android Callable Wrapper 。 Android Callable Wrapper用于允许Java代码调用托管代码(例如,当您覆盖Activity.OnCreate()时, Android实际上可以调用托管覆盖。

但是,有一些限制 ; 特别是,Android Callable Wrapper中声明的唯一方法是来自已实现接口的重写方法和方法。 这使Java-> C#场景变得复杂。

[有]有理由这样做吗?

是。 在许多情况下,您目前无法使用C#,例如使用android.jar之外的类型(例如Maps API )。 (有Android.Runtime.JNIEnv ,但这不适用于子类化方案。)因此,使用Java API的最简单方法是用Java编写一些代码,然后集成Java和托管代码通过各种机制,包括单独的活动(使用Activity.startActivity()从Java启动托管活动), JNIEnv ,服务等。