如何只做一个事件public

How to make only an event public

我的 class 中有一个 ObservableCollection 对象:

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

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

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

那我怎么才能只做事件public呢?

MyClass 上的事件包装 CollectionChanged 事件。大概是这样的:

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 */};