要するに
メソッドを呼び出せるようにしたいのですが、メソッドは型のパラメーターを取りますが、で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キャストするようにしました。ウィンドウはモーダルでのみ表示されるため、ウィンドウを閉じた後にこのメンバーにアクセスできます。IEnumerableObservableCollection
public ObservableCollection<BaseClass> List;
public InitialiseWindow(IEnumerable<BaseClass> List)
{
    InitializeComponent();
    this.List=new ObservableCollection<BaseClass>(List);
}