title: List<T> firing Event on Change
body: <p>I created a Class <strong>EventList</strong> inheriting <strong>List</strong> which fires an Event each time something is Added, Inserted or Removed:</p>
  
  <pre><code>public class EventList&lt;T&gt; : List&lt;T&gt;
  {
      public event ListChangedEventDelegate ListChanged;
      public delegate void ListChangedEventDelegate();
  
      public new void Add(T item)
      {
          base.Add(item);
          if (ListChanged != null
              &amp;&amp; ListChanged.GetInvocationList().Any())
          {
              ListChanged();
          }
      }
      ...
  }
  </code></pre>
  
  <p>At the Moment I use it as a Property like this:</p>
  
  <pre><code>public EventList List
  {
      get { return m_List; }
      set
      {
          m_List.ListChanged -= List_ListChanged;
  
          m_List = value;
  
          m_List.ListChanged += List_ListChanged;
          List_ListChanged();
      }
  }
  </code></pre>
  
  <p>Now my Problem is, can I somehow handle if a new Object is referred to it or prevent that, so I do not have to do the event wiring stuff in the setter?</p>
  
  <p>Of course, I can change the property to "private set" but I would like to be able to use the class as variable as well.</p>