我正在考虑如何最好地划分团队之间的新项目。我们有一个Windows C#应用程序服务团队和一个较小的iOS Objective-C团队。它也可能迟早需要Android应用程序。
设备上调用我们的服务并处理与本地数据存储同步的域层/ api程序集是用C#编写并使用MonoTouch编译的逻辑组件。然后Objective-C团队引用此组件。那可能吗?我已经在MonoTouch引用C程序集上阅读了很多内容,但是它能以相反的方式工作吗?
如果可能的话,听到尝试这种方法的任何经验真是太棒了!
由于 亚伦
答案 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);
}