如何将Dictionary对象传递给泛型类型参数?

如何将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) 
+0

'_service'是什么类型?对_serviceType.ParseResponse()'的第一个泛型类型参数是否有任何限制? – itsme86 2014-09-19 01:24:26

+0

_service是一个类,第一个参数是一种IWebRequest。我有一个case/switch语句,它根据传入的webRequest参数生成一个不同的_service。 – user3092978 2014-09-19 14:54:17

+0

我试图发布一个小提琴,你可以看到发生了什么,但小提琴显示失败的字典和IGateway调用,即使这在我的代码中工作。 https://dotnetfiddle.net/NQ7G8E – user3092978 2014-09-19 15:35:47

更改词典到IDictionary的,问题就解决了。