如何在Dictionary中存储具有不同参数的通用Actions?

时间:2016-03-20 10:04:50

标签: c# .net generics dictionary

我想在Dictionary中使用一个通用参数存储委托(Action),我想避免任何Code Smell 关于向下/向上铸造,如果可能的话。

基本上我正在实现某种请求/响应回调管理器,其中用户从a请求某些东西 REST API并使用正确的Response对象为我提供回调。简而言之,用户调用的方法如下:

void GetUser(int id, Action<GetUserResponse> callback);

然后,我发出请求并将回调保存到我的&#34;回拨管理器&#34;。当来自服务器的响应 进来(主要是json)我将它解析为GetUserResponse对象并触发回调。但是有很多不同 具有不同响应对象的请求和回调管理器必须优先考虑它们(以及其他一些东西) 我希望,而不是为存储该请求的回调的每个请求都有一个Dictionary 有一个字典存储所有回调(和一个唯一的id)。

基本上是这样的:(显然不能那样工作)

Dictionary<GUID,Action<T>> AllCallbacks;

是否可以在&#34;用户端&#34;?

上投射任何内容

1 个答案:

答案 0 :(得分:1)

看看Dictionary of Action<T> Delegates。 应该为您提供一些可供选择的指导。我不认为有一个简单而优雅的解决方案。 你可以使用Dictionary<GUID,Action<dynamic>> AllCallbacks;,但是你需要输入check和cast。