如何只做一个事件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 */};
我的 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 */};