插入List后执行一些操作

时间:2012-04-09 16:07:02

标签: c#

我有以下课程:

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

   public List<SomeType> list;
}

在有人将元素放入该列表后,是否可以执行某些操作,例如fire不同的方法?

5 个答案:

答案 0 :(得分:5)

您应该使用ObservableCollection<SomeType>代替。

ObservableCollection<T>提供您可以订阅的CollectionChanged事件 - 在添加,删除,更改,移动项目或刷新整个列表时会触发CollectionChanged事件。< / p>

答案 1 :(得分:4)

也许您应该使用ObservableCollection<T>。它会在添加或删除项目时触发事件,或者其他几个事件。

以下是文档:http://msdn.microsoft.com/en-us/library/ms668604.aspx

答案 2 :(得分:2)

List不会公开任何事件。您应该考虑使用ObservableCollection。如果添加,删除,更改,移动项目或刷新整个列表,则会发生CollectionChanged事件。

答案 3 :(得分:1)

你可以做点什么

        private List<SomeType> _list;

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

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

但ObservableCollection最好。

答案 4 :(得分:0)

如果您创建自己的IList实现,则可以在将项添加到列表中时调用方法(或执行您想要的任何其他操作)。创建一个继承自IList的类,并将类型为T的列表作为私有成员。使用私有成员实现每个Interface方法,并将Add(T item)调用修改为您需要它执行的任何操作

代码:

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
   }