【发布时间】:2016-03-20 10:04:49
【问题描述】:
我想在Dictionary 中存储带有一个通用参数的委托(Action),并且我想避免任何代码异味
如果可能的话,关于向下/向上转换。
基本上,我正在实现某种请求/响应回调管理器,其中用户从 REST API 并为我提供带有正确响应对象的回调。简而言之,用户调用的方法如下所示:
void GetUser(int id, Action<GetUserResponse> callback);
然后,我发出请求并将回调保存到我的“回调管理器”中。当来自服务器的响应
进来(主要是 json)我把它解析成一个 GetUserResponse 对象并触发回调。不过有很多不同的
具有不同响应对象的请求和回调管理器必须优先考虑它们(以及其他一些东西)
我不想为存储该请求的回调的每个请求都有一个字典,而是
有一个字典来存储所有的回调(和一个唯一的 id)。
基本上是这样的:(显然不能这样工作)
Dictionary<GUID,Action<T>> AllCallbacks;
这是否可能而无需在“用户端”投射任何东西?
【问题讨论】:
-
响应对象有什么共同点吗?你能创建一个对所有人都通用的界面吗?
-
很遗憾没有。或多或少只持有因请求而异的数据
-
你能举一个你需要存储的两个不同请求Action
对象的例子吗?
标签: c# .net generics dictionary