2011-12-29 3 views
0

私は1つの「マスターリスト」(好ましくはタイプBindingList)を持っています。別のクラスでは、私は「マスターリスト」の特定の要素で構成されるサブリストを持っています。クラスの各インスタンスには異なる要素があります。各サブリストを「マスターリスト」と同期させる方法はありますか?サブリストをマスターリストの内容と同期させておく方法はありますか?

+0

**のためにこれを参照してください?あなたはマスターリスト要素の例を与えてから、サブリスト要素と同期をとっておきたい要素を挙げられますか? –

+0

「マスターリスト」内のオブジェクトが変更された場合、そのオブジェクトを含むサブリストは変更を更新します – joshua

+3

値タイプでない場合、変更を更新します。 .NETのオブジェクトは参照渡しされます。あなたはこれについて全く心配するべきではありません。同じ参照である限り、オブジェクトは多くのコレクションに属することができます(また、クローンを作成していない場合にはそうする必要があります)。オブジェクトは** "同期" **されます。 –

答えて

0

リストを拡張して、必要なタイプのリストを作成し、「メイン」リストを更新するたびに同期するコンポジットオブジェクトを追加することができます。

ここで私はjavaでそれをやっていますが、C#でも同じことができますが、正確な構文は覚えていません。あなたは、あなたが好きなタイプのものを好きなだけ拡張することができます。

public class MyList extends ArrayList { 
    private List<Object> someOtherList; 
    public MyList(){ 
     super(); 
    } 

    public void setSyncList(List<Object> list){ 
     someOtherList = list; 
    } 

    @Override 
    public boolean add(Object arg0) { 
     boolean b = super.add(arg0); 
     someOtherList.add(arg0); // here you can decide what action should be done to the syncList, it might not want to add all elements, same goes for the remove below 
     return b; 
    } 

    @Override 
    public boolean remove(Object arg0) { 
     boolean b = super.remove(arg0); 
     someOtherList.remove(arg0); 
     return b; 
    } 

} 
+0

複数のサブリストを組み込む方法は? arg0の変更だけでなく? – joshua

+0

私はsomeOtherListをリストのリストにします。次に、これらのリストをすべて追加して削除し、必要に応じてより多くのアクションのためのインターフェースを実装するようにします – Marthin

関連する問題