如何仅公开活动

时间:2015-02-16 23:16:02

标签: c# oop events

我班上有ObservableCollection个对象:

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

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

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

那我怎么才能把这个活动公之于众?

1 个答案:

答案 0 :(得分:3)

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