2012-04-09 20 views
2

に挿入した後、いくつかの操作を行います。は、私は以下のクラスを持っているリスト

public class FirstClass 
{ 
    public FirstClass() 
    { 
     list = new List<SomeType>(); 
    } 

    public List<SomeType> list; 
} 

誰かがそのリストに要素を入れます後に火は別の方法のようないくつかのアクションを行うことが、このことは可能ですか?

+0

あなたはC#で変数を作成する方法について質問を削除しました。しかし、ちょうどFYI、私は好奇心のために前に似たような質問をしました:http://stackoverflow.com/questions/7478833/is-it-possible-to-create-variables-at-runtime-in-java答えはC#にも適用されます。 – NullUserException

答えて

5

代わりにObservableCollection<SomeType>を使用してください。

ObservableCollection<T>は、サブスクライブすることができるCollectionChangedイベントを提供します。アイテムの追加、削除、変更、移動、またはリスト全体のリフレッシュ時にイベントが発生します(CollectionChanged)。

2

Listこのイベントは発生しません。代わりにObservableCollectionの使用を検討する必要があります。アイテムが追加、削除、変更、移動、またはリスト全体がリフレッシュされたときに発生するCollectionChangedイベントがあります。

4

多分ObservableCollection<T>を使用する必要があります。アイテムが追加または削除されたとき、または他のいくつかのイベントが発生すると、イベントが発生します。ここで

は、docです:http://msdn.microsoft.com/en-us/library/ms668604.aspx

1

あなたは

 private List<SomeType> _list; 

     public void AddToList(SomeType item) 
    { 
     _list.Add(item); 
     SomeOtherMethod(); 
    } 

     public ReadOnlyCollection<SomeType> MyList 
    { 
     get { return _list.AsReadOnly(); } 
} 

ような何かを行うことができますがのObservableCollectionがベストでしょう。

0

IListの独自の実装を作成した場合は、アイテムがリストに追加されたときにメソッドを呼び出すことができます。 IListから継承し、プライベートメンバーとしてT型のリストを持つクラスを作成します。プライベートメンバーを使用して各インターフェイスメソッドを実装し、必要なものをAdd(Tアイテム)呼び出しに変更します。

コード:

public class MyList<T> : IList<T> 
{ 
    private List<T> _myList = new List<T>(); 

     public IEnumerator<T> GetEnumerator() { return _myList.GetEnumerator(); } 
     public void Clear() { _myList.Clear(); } 
     public bool Contains(T item) { return _myList.Contains(item); } 

     public void Add(T item) 
     { 
      _myList.Add(item); 
      // Call your methods here 
     } 

     // ...implement the rest of the IList<T> interface using _myList 
    } 
関連する問題