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

时间:2014-09-19 01:11:13

标签: c# asp.net asp.net-mvc

更新了小提琴 这是一个类似的例子,虽然这个小提琴在IGatewayRequest / IGatewayResponse以及字典和词典上都有缺点 - 我的代码实际上可以使用接口而不是字典来运行和运行。

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和TResponse是这样被调用的接口并且工作正常

serviceResponse = gatewayRequest.Execute<IGatewayRequest,IGatewayResponse>(webRequest);

但是,只要我有一个请求和响应类型的Dictionary,并且在这种情况下请求类型是Dictionary,那么我得到以下编译时间

代码:

 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)

1 个答案:

答案 0 :(得分:0)

将词典更改为IDictionary,问题解决了。