iOS XCode应用程序可以引用MonoTouch程序集吗?

时间:2011-03-10 06:03:59

标签: ios xamarin.ios

我正在考虑如何最好地划分团队之间的新项目。我们有一个Windows C#应用程序服务团队和一个较小的iOS Objective-C团队。它也可能迟早需要Android应用程序。

设备上调用我们的服务并处理与本地数据存储同步的域层/ api程序集是用C#编写并使用MonoTouch编译的逻辑组件。然后Objective-C团队引用此组件。那可能吗?我已经在MonoTouch引用C程序集上阅读了很多内容,但是它能以相反的方式工作吗?

如果可能的话,听到尝试这种方法的任何经验真是太棒了!

由于 亚伦

1 个答案:

答案 0 :(得分:2)

虽然技术上可行,但今天没有简单的方法。

您现在可以做的最好的事情是从C#启动应用程序,然后,如果需要,将控制转移到Objective-C代码。在C#启动期间,您可以使用P / Invoke注册要通过Objective-C代码回调的方法来调用类似的内容:

delegate void some_callback_t (int parameter1, int parameter2);

[DllImport ("__Internal")]
void SetCallback (some_callback_t callback);

static void mycallback (int parameter1, int parameter2)
{
    // Here goes your C# logic to be called by C
}

然后你打电话:

SetCallback (mycallback);

请注意,mycallback必须是静态方法(静态编译的限制)。然后,您的Objective-C代码可以通过实现以下内容来使用服务:

 typedef (*callback_t) (int p1, int p2);
 callback_t callback;
 void SetCallback (callback_t cb)
 {
     callback = cb;
 }

 void InvokeCSharp ()
 {
     callback (1, 2);
 }