2014-09-19 2 views
2

바이얼로 업데이트 바이올린은 IGatewayRequest/IGatewayResponse와 사전 및 사전 모두를 위반하지만이 비슷한 예입니다. 제 코드는 실제로 작동하지만 사전은 사용하지 않고 성공적으로 실행됩니다.사전 개체를 제네릭 형식 매개 변수로 전달하는 방법은 무엇입니까?

https://dotnetfiddle.net/NQ7G8E

는 I는 요청 및 응답 형뿐만 아니라 요청 된 데이터를 수용하고 데이터를 처리 할 것을 전달하는 호출을 그 이하의 코드 세트를 갖는다. 이것은 사전이 아닌 객체에 대해서는 작동하지만 사전 객체에서는 실패합니다. 사전 형식을 제네릭 형식 매개 변수에 전달할 수 있습니까? 내가하기 위해해야 ​​할 일과 다른 것이 있습니까? 여기

두 유형 파라미터 및 상기 요청에 걸리는 코드하고 _service.ParseResponse는 I이 방법을 구현하는 2 개 가지 종류가 오류

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; 

} 

곳에있는 호출 한 곳에 TRequest 및 TResponse는 다음과 같이 호출되는 인터페이스이며, 나는 사전의 요청 및 응답 유형이 자마자,

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 서명은 다음과 같습니다 IDictionary에

public IServiceResponse ParseResponse<TRequest, TResponse>(IWebRequest webRequest, TRequest proxyRequest, TResponse gatewayResponse) 
+0

어떤 유형이'_service'입니까? '_serviceType.ParseResponse()'에 대한 제네릭 타입 매개 변수에 제약이 있습니까? – itsme86

+0

_service는 클래스이고 첫 번째 매개 변수는 IWebRequest 유형입니다. 들어오는 webRequest 매개 변수를 기반으로 다른 _service를 생성하는 case/switch 문이 있습니다. – user3092978

+0

필자는 무슨 일이 일어나고 있는지 볼 수있는 바이올린을 게시하려고 시도했지만, 코드에서 작동한다고해도 사전과 IGateway 호출 모두에 대해 바이올린 오류가 표시됩니다. https://dotnetfiddle.net/NQ7G8E – user3092978

답변

관련 문제