【发布时间】:2016-10-11 11:40:27
【问题描述】:
我有一些通用类 GeneralClass,其中包含带有通用事件处理程序的事件
GeneralClass<T>
{
public event DataChangedHandler<T> DataChanged;
}
我可以写下一段代码:
class MainClass
{
public void OnDataChanged<T>(T parametrs)
{
}
var MyClass1 = new GenericClass<classA>();
var MyClass2 = new GenericClass<classB>();
MyClass1.DataChanged+= OnDataChanged;
MyClass2.DataChanged+= OnDataChanged;
}
一切都按我的预期进行。但是是否可以将我的泛型类的所有不同实例存储在一个集合中并循环添加事件处理程序?像这样的:
class MainClass{
public void OnDataChanged<T>(T parametrs)
{
}
var MyClass1= new GenericClass<classA>();
var MyClass2= new GenericClass<classB>();
List<> genericClasses = new List<>();
genericClasses.Add(MyClass1);
genericClasses.Add(MyClass1);
genericClasses.foreach(t=>t.DataChanged+=OnDataChanged)
}
我知道我可以将所有实例存储在对象列表中,但我无法访问事件。如果我将对象转换为 GenericClass,我必须指定泛型参数(类型)。
【问题讨论】:
标签: c# generics collections event-handling