我在便携式库中使用ObservableCollection但我收到以下错误。我该如何解决这个问题?
'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'可以 找到(你错过了使用指令或程序集 引用?)
编辑: 我在便携式库中有这个类
Class A
{
public ObservableCollection<MyClass> MyList { get;set;}
}
并尝试在WCF服务中使用它。
myA.MyList.Add(new MyClass());
第二次编辑: 我通过将具有observable集合属性的类放到不同的项目/库中来解决这个问题。但我仍然想知道为什么我会遇到这个奇怪的错误。
此问题的另一个解决方案是为我的项目提供更好的解决方案结构。我还在努力管理它。
我正在设计一个使用WCF服务的Silverlight项目。我有一些共同的类可以在Silverlight和WCF服务中共享。我只能通过使用一个可移植的类并共享来使它工作,因为我需要使用一些数据结构,如ObservableCollection和SortedList等。便携式类没有这个。由于这个原因,我在不同的库中有Surrogate类,但这看起来不太好。 我该如何设计呢?
答案 0 :(得分: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 =[
尝试检查抛出错误的行,并确保传入正确的变量(可能是拼写错误)。
<强>更新强>
您的代码示例确认了这种情况。您将列表定义为ObservableCollection<MyClass>
,这意味着插入此列表的任何对象都到MyClass
的实例或从 > MyClass
。
在以下行中,您尝试将A
类型的对象添加到列表中,A
既不是MyClass
也不是从MyClass
继承:
myA.MyList.Add(new A());
要解决此问题,您需要让班级A
继承MyClass
(class A implements MyClass
),将列表更改为ObservableCollection<A>
,或者重新考虑原因你需要在该列表中添加一个类型A
(也许你需要两个列表?)。