我想在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;?
上投射任何内容答案 0 :(得分:1)
看看Dictionary of Action<T> Delegates。
应该为您提供一些可供选择的指导。我不认为有一个简单而优雅的解决方案。
你可以使用Dictionary<GUID,Action<dynamic>> AllCallbacks;
,但是你需要输入check和cast。