更新了小提琴 这是一个类似的例子,虽然这个小提琴在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)
答案 0 :(得分:0)
将词典更改为IDictionary,问题解决了。