Lets say we have the following model:
    public class Bar<T>:List<T>
    {
        public delegate void CollectionChangedDelegate();
        public event CollectionChangedDelegate CollectionChanged;
    }
    public class Foo
    {
        Bar<object> MyCollection = new Bar<object>();
        public Foo()
        {
            MyCollection.CollectionChanged += new Bar<object>.CollectionChangedDelegate(MyCollection_CollectionChanged);
        }
        public void MyCollection_CollectionChanged()
        {
            //Do Something
        }
        ~Foo() //Would this work ?
        {
            MyCollection.CollectionChanged -= MyCollection_CollectionChanged;
        }
    }
Could the destructor of Class Foo be called in this case ?