要するに
メソッドを呼び出せるようにしたいのですが、メソッドは型のパラメーターを取りますが、でObservableCollection<Base>
呼び出したいのですObservableCollection<Derived>
。2つの間で変換できないと書かれています。
より長いです
WPFウィンドウを呼び出したいのですが、その中にはにバインドするリストボックスがありObservableCollection
ます。2つの異なるクラスに共通するいくつかの基本情報をウィンドウに表示したいと思います。クラスはとでDerived1
ありDerived2
、に基づいていBaseClass
ます。タイプがちょうどだったメソッドを呼び出すことができますがBaseClass
、リストを渡したいです。
だから私は2つのコレクションを持っています:
ObservableCollection<Derived1> A;
ObservableCollection<Derived2> B;
そして、上記の2つのコレクションを使用して、以下のようなメソッドを呼び出せるようにしたいので、コードを複製する必要はありません。
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);
}