2012-10-02 52 views
1

我使用的ObservableCollection在便攜式庫,但我發現下面的錯誤。我怎麼解決這個問題?System.Collections.ObjectModel.ObservableCollection`1錯誤

'System.Collections.ObjectModel.ObservableCollection 1<MyClass>' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'System.Collections.ObjectModel.ObservableCollection 1' 的 找到(是否缺少using指令或程序集 參考?)

編輯: 我有這個類的便攜式庫

Class A 
{ 

public ObservableCollection<MyClass> MyList { get;set;} 

} 

並試圖在WCF服務中使用它。

myA.MyList.Add(new MyClass()); 

第二個編輯: 我想通了通過將具有可觀察到的集合屬性我類不同的項目/庫。但我仍然想知道爲什麼我得到了這個奇怪的錯誤。

對這個問題的另一個解決方案是爲我的項目更好的解決方案結構。我仍然試圖管理它。

我設計一個Silverlight項目消費WCF服務。我有一些共同的類可以在Silverlight和WCF服務中共享。我無法使用便攜式類和共享工作,因爲我需要一些數據結構來使用,如ObservableCollection和SortedList等。便攜式類沒有這個。由於這個原因,我在不同的圖書館有Surrogate類,但這看起來不錯。 我應該如何設計它?

+0

你能提供更多的信息嗎?您定位的平臺是什麼?你可以通過創建一個針對相同平臺的小型repro項目來重現這一點嗎? –

+0

我正在瞄準Silverlight 4。5和更高 – Kubi

+0

沒有repro,我不能幫助。你可以在一個針對相同平臺的小型項目中重新制作這個文件嗎? *所有*您定位的平臺的列表是什麼? –

回答

1

錯誤聽起來像你想ObservableCollection類型的項目添加到現有ObservableCollection是由MyClass對象的列表,如:

ObservableCollection<object> miscList = new ObservableCollection<object>(); 
ObservableCollection<MyClass> realList = new ObservableCollection<MyClass>(); 
realList.Add(miscList); // miscList isn't a "MyClass" object =[ 

嘗試檢查的投擲錯誤的行並確保你傳遞了正確的變量(可能是一個錯字)。

UPDATE
你的代碼示例證實了這種情況。您將您的列表定義爲ObservableCollection<MyClass>,這意味着插入此列表的任何對象具有可由MyClass的實例或從MyClass繼承

在下面的行,你試圖A類型的對象添加到列表中,並A既不是MyClass也不從MyClass繼承:

myA.MyList.Add(new A()); 

爲了解決這個問題,你要麼需要的類A繼承MyClassclass A implements MyClass),改變你的列表是ObservableCollection<A>代替,或重新考慮的原因,你需要一個類型A添加到列表(也許你會需要兩個列表呢?)。

+0

謝謝你的回答。我不是想添加一個不同的類型對象,而是在便攜庫中定義類。這可能是原因嗎?我應該修補某處以防止這種情況發生嗎? – Kubi

+0

我已更新我的答案,以反映您最近添加的代碼。給它一個解讀,並讓我知道如果這有助於或不= = – newfurniturey

+0

我的錯誤。這是一個錯字。我再次修復了這個問題。在現實生活場景中,代碼太複雜了,但總結一下,我有一個GameTable對象,它具有Player對象的ObservableCollection。在我的WCF服務中,我試圖操縱列表,但是我收到了這個奇怪的錯誤。 – Kubi