gpt4 book ai didi

c# - 对强类型事件处理程序使用泛型?

转载 作者:行者123 更新时间:2023-11-30 15:33:11 40 4
gpt4 key购买 nike

我正在尝试按照以下方式实现一些东西

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/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com