2012-01-10 42 views
1

我在使用Silverlight 3存根使用WCF服務,我需要的一個參數是System.Collections.ObjectModel.ObservableCollection。 但是下面的代碼是拋出一個NotImplementedExceptionSystem.Collections.ObjectModel.ObservableCollection僅在Monotouch中部分實現?

ItemType[] aItemTypes = ...; 
ObservableCollection<ItemType> aTypes = null; 
if(aItemTypes != null) 
{ 
    aTypes = new ObservableCollection<ItemType> (aItemTypes); 
} 

如果我使用foreach循環添加的所有條目手動而不是使用需要一個枚舉的構造,它的工作原理。有沒有理由爲什麼構造函數丟失或被遺忘?

回答

1

有沒有理由爲什麼構造函數丟失或只是被遺忘?

當有人實現一個類型但不需要它裏面的所有東西時,這有時會出現在Mono基類庫源代碼中。在這種情況下,最好添加存根失蹤的代碼,因爲這樣的:

  • 允許現有的彙編代碼;
  • 它在運行時避免MissingMethodExceptionNotImplementedException更容易診斷;
  • 允許Mono的工具,例如, MoMAGendarme,在現有的.NET代碼上報告NotImplementedException

在這個特定的情況下,我懷疑需要更多的測試來查看被複制的項目是否需要觸發事件(whgen添加它們)。

好消息是這種方法是在Mono的GIT主控中實現的。我會考慮將此backporting到mono-2-10分支,所以MonoTouch將在未來的版本中獲得它。

+0

mono-2-10已經更新(對於Mono for Android,其他人必須具有相同的條件),因此此方法的*實現*將成爲下一個MonoTouch 5.1.x版本的一部分。 – poupou 2012-01-10 18:55:20

相關問題