2011-03-10 61 views
3

我正在考慮如何最好地在團隊之間爲新項目劃分工作。我們有一個Windows C#應用服務團隊和一個較小的iOS Objective-C團隊。也可能遲早會需要Android應用程序。iOS XCode應用程序可以引用MonoTouch程序集嗎?

設備上調用我們的服務並處理與本地數據存儲同步的域層/ api程序集是用C#編寫並使用MonoTouch編譯的邏輯組件。然後Objective-C團隊引用這個組件。那可能嗎?我在MonoTouch引用C程序集的時候閱讀了很多,但是它能以其他方式工作嗎?

如果有可能的話,嘗試這種方法的任何經驗都會很棒!

感謝 亞倫

回答

2

雖然技術上可行,就沒有今天這樣的沒有簡單的方法。

您現在可以做的最好的事情是從C#啓動應用程序,然後如果需要,將控制權轉移到您的Objective-C代碼。在C#的推出,你可以註冊方法,使用P叫回用Objective-C代碼/ Invoke的調用是這樣的:

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); 
} 
+0

嗨米格爾,感謝您的及時響應。是否有可能發回複雜的DTO?是否需要特殊編組? - 這看起來不像我可以說服我們的iOS大師使用的東西。謝謝 – Aaron 2011-03-10 23:56:01

+0

我不知道DTO的含義。 – 2011-03-11 06:30:04

+0

DTO =數據傳輸對象。一般而言,它只是一個簡單的對象,只具有屬性,並且沒有行爲,用於跨不同層發送數據。 – 2011-03-11 19:25:10

相關問題