简而言之
我希望能够调用一个方法,该方法需要一个类型的参数,ObservableCollection<Base>
但我想用ObservableCollection<Derived>
. 它说它不能在两者之间转换。
更长
我想调用一个 WPF 窗口,它是一个将绑定到ObservableCollection
. 我希望窗口显示两个不同类共有的一些基本信息。这些类是Derived1
和Derived2
,并且基于BaseClass
. 我可以调用该方法的类型只是 be BaseClass
,但我想传递一个列表。
所以我有两个系列:
ObservableCollection<Derived1> A;
ObservableCollection<Derived2> B;
并且希望能够使用上述两个集合调用如下所示的方法,因此我不需要重复代码。
public void InitialiseWindow(ref ObservableCollection<BaseClass> List)
{
this.List=List;
}
但它会抛出一个错误:
cannot convert from 'ref System.Collections.ObjectModel.ObservableCollection<Derived1>' to 'ref System.Collections.ObjectModel.ObservableCollection<Base>'
虽然我在这里
是否有更好的方法来绑定集合中所做的更改Window
将反映在源上,而不是使用ref
?
解决方案
我修改了 的构造函数,Window
以便将 转换IEnumerable
为类型的公共成员ObservableCollection
。由于窗口只会以模态方式显示,因此可以在窗口关闭后访问该成员。
public ObservableCollection<BaseClass> List;
public InitialiseWindow(IEnumerable<BaseClass> List)
{
InitializeComponent();
this.List=new ObservableCollection<BaseClass>(List);
}