我有一个ICollection
,我想将其初始化为一个可观察的集合。
ICollection<Thing> things = new ObservableCollection<Thing>();
然后在这个可观察的集合上,我想调用.Move
这样的函数,但我遇到了错误。为什么会这样?事物实际上不是一个可观察的集合吗?
您声明变量things
的接口类型为ICollection<Thing>
,之所以能够将其初始化为ObservableCollection<Thing>
,是因为ObservableCollection<T>
类继承了ICollection<T>
接口。
但是,通过这种方式声明它,您将只能访问ICollection<T>
接口定义的成员,这意味着任何特定于ObservableCollection
的成员都是不可访问的。
要改变这一点,可以这样声明things
:
ObservableCollection<Thing> things = new ObservableCollection<Thing>();
或使用类型铸造:
var myObservableCollection = (ObservableCollection<Thing>)things;