我正在尝试按照以下方式实现一些东西
class Receiver {
public RegisterEvent<T>(???);
}
class EventTypeClass {
...
}
class MyApp
{
public MyApp()
{
RegisterEvent<EventTypeClass>(MyEventHandler);
}
void MyEventHandler(EventTypeClass param)
{
// Handle event of type 'EventTypeClass'
}
}
我不确定如何将强类型事件处理程序作为参数传递,或者是否可能,或者我是否被迫使用类似的东西
void MyEventHandler(object param)
{
var castedParam = param as EventTypeClass;
}
最佳答案
您可以只将泛型类型传递给参数......像这样:
class Receiver {
public RegisterEvent<T>(T param);
}
参数列表中的 T
必须与调用中提供的类型匹配。
编辑:重新阅读问题..也许这实际上是你的意思:
public delegate void CustomEventHandler<T>(T param);
public void RegisterEvent<T>(CustomEventHandler<T> eh) {
}
..虽然相同的理念。
关于c# - 对强类型事件处理程序使用泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17674630/