可观察集合类型的继承



我有以下类:

Car.cs

public class Car 
{

}

scoda.cs

public class scoda : Car
{

}

Test.cs

public class Test
{
public ObservableCollection<scoda> scodaList;
public Test()
{
scodaList = new ObservableCollection<scoda>();
scoda s = new scoda();
scodaList.Add(s);
set(scodaList);
}
public void set(ObservableCollection<Car> list)
{
}
}

当调用set方法时,我得到了下面的转换错误

无法从'System.Collections.ObjectModel.ObservableCollection'转换为'System.Collections.ObjectModel.ObservableCollection

正如评论中指出的,Car的集合不是Scoda的集合。因此,您应该将Scoda的集合转换为Car的集合:

var carList = new ObservableCollection<Car>(scodaList.Select(s => (Car)s));
set(carList);

如果您不想创建新的ObservableCollection,您可以将scodaList定义为Car对象的集合:

public ObservableCollection<Car> scodaList;
private void test() 
{
scodaList = new ObservableCollection<Car>();
scoda s = new scoda();
scodaList.Add(s);
set(scodaList);
}
public void set(ObservableCollection<Car> list)
{
}

最新更新