我的课堂上有一个ObservableCollection对象:

public class MyClass {
    ObservableCollection<Stuff> oc;
    ....
}


我希望能够在课程之外访问ObservableCollection<T>.CollectionChanged事件。我可以启用get;方法,但是我不想公开所有其他方法,属性和内容。

如果我只想使用一个方法,则可以在MyClass中创建一个方法,然后在类中的oc上调用该方法。我不知道如何使用Event对象执行此操作。

那么,如何才能仅将活动公开?

最佳答案

CollectionChanged上的事件包装MyClass事件。也许像这样:

public class MyClass
{
    ObservableCollection<Stuff> oc;

    //Assumes oc is never null.
    public event NotifyCollectionChangedEventHandler CollectionChanged
    {
        add { oc.CollectionChanged += value; }
        remove { oc.CollectionChanged -= value; }
    }
}


然后,您可以订阅MyClass上的CollectionChanged事件,如下所示:

var myInstance = new MyClass();
//Assume field is assigned at this point to something non-null
myInstance.CollectionChanged += delegate {/*Do something interesting */};

10-04 18:16