我想在一个a中存储具有一个泛型参数的委托(Action),Dictionary
并且如果可能的话,我想避免任何有关向下/向上广播的Code Smell。
基本上,我正在实现某种请求/响应回调管理器,其中用户从REST API请求某些内容,并为我提供具有正确Response对象的回调。简而言之,用户调用的方法如下所示:
void GetUser(int id, Action<GetUserResponse> callback);
然后,我发出请求,并将回调保存到我的“回调管理器”中。当来自服务器的响应(主要是json)传入时,我将其解析为一个GetUserResponse
对象并触发回调。但是,有许多不同的请求具有不同的响应对象,并且回调管理器必须对它们进行优先级排序(还有其他一些东西),而不是每个存储有该请求的回调的单个请求都具有一个词典,我想拥有一个存储所有回调(和唯一ID)的字典。
基本上是这样的:(显然不能那样工作)
Dictionary<GUID,Action<T>> AllCallbacks;
不必在“用户端”投放任何内容,这有可能吗?
看一下动作词典<T>代表。应该为您提供一些可用选项的指导。我认为没有开箱即用的简单优雅的解决方案。您可以使用,Dictionary<GUID,Action<dynamic>> AllCallbacks;
但随后需要键入check并进行相应的转换。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句