如何将Dictionary对象传递给泛型类型参数?
问题描述:
更新为小提琴 这是一个类似的例子,虽然小提琴在IGatewayRequest/IGatewayResponse和词典和词典上都突破 - 我的代码实际上工作并且成功地通过界面运行,但与字典无关。如何将Dictionary对象传递给泛型类型参数?
https://dotnetfiddle.net/NQ7G8E
我需要的一组代码,低于该接受请求和响应的类型,以及该请求的数据,然后进行呼叫传递的数据进行处理。它适用于非字典对象,但它与字典对象失败。我能否将字典类型传递给泛型类型参数?有什么不同的,我必须做的工作?
下面是发生在两个类型参数和请求的代码,然后调用_service.ParseResponse其是其中误差是
public IServiceResponse Execute<TRequest,TResponse>(IServiceRequest webRequest) {
var proxyRequest = _proxy.Call(webRequest)
var gatewayResponse = _gateway.Send(proxyRequest);
var serviceResponse = _service.ParseResponse<TRequest, TResponse>(request, (TRequest) proxyRequest, (TResponse) gatewayResponse);
return serviceResponse;
}
我有实现此方法2不同的类,其中一个TRequest和τ响应是得到这样调用接口,因为我有字典的请求和响应类型,一旦工作正常
serviceResponse = gatewayRequest.Execute<IGatewayRequest,IGatewayResponse>(webRequest);
然而,在这种情况下请求类型是字典,然后我得到以下编译时间
代码:
serviceResponse = gatewayRequest.Execute<Dictionary<string,object>,Dictionary<string,string>>(webRequest);
错误:
Cannot convert type System.Collections.Generic.Dictionary<string,object> to TRequest
任何援助表示赞赏!
谢谢!
编辑: 我ParseResponse签名如下:
public IServiceResponse ParseResponse<TRequest, TResponse>(IWebRequest webRequest, TRequest proxyRequest, TResponse gatewayResponse)
答
更改词典到IDictionary的,问题就解决了。
'_service'是什么类型?对_serviceType.ParseResponse()'的第一个泛型类型参数是否有任何限制? – itsme86 2014-09-19 01:24:26
_service是一个类,第一个参数是一种IWebRequest。我有一个case/switch语句,它根据传入的webRequest参数生成一个不同的_service。 – user3092978 2014-09-19 14:54:17
我试图发布一个小提琴,你可以看到发生了什么,但小提琴显示失败的字典和IGateway调用,即使这在我的代码中工作。 https://dotnetfiddle.net/NQ7G8E – user3092978 2014-09-19 15:35:47