2013-01-09 129 views
1

我有一個方法被定義爲接收兩個參數。一種是普通型,另一種是用一個通用的返回類型的函數:爲什麼我的方法期待錯誤的返回類型?

public class MyHelperClass<TRequest, TResponse> 
{ 
    public TResponse Execute(TRequest request, Func<IDataRecord, TResponse> builder){ ... } 
} 

然後我有了我想通過一個委託

public class MyObject 
{ 
    public TResponse BuildMe(IDataRecord rdr){ ... } 
} 

//call like this 
MyHelperClass.Execute(input, myObjectInstance.BuildMe); 

,但我的方法的對象得到一個錯誤,指出:

「預期與方法‘TRequest BuildResponse(IDataRecord)’

爲什麼它期待TRequest作爲回報,而不是一個τ響應?

enter image description here

enter image description here

enter image description here

回答

3

正因爲如此:

private GetSamyungDataSourceV1<TRequest, TRequest> _getSamyungDataSourceV1; 

..應該是:

private GetSamyungDataSourceV1<TRequest, TResponse> _getSamyungDataSourceV1; 
              // ^^^ this. 

..另外,該類中的TResponseTRequest

+0

哦,我的上帝,我怎麼錯過了。 ROFL。謝謝。我只需要另一雙眼睛。 – Sinaesthetic

1

因爲_getSamyungDataSourceV1被聲明爲GetSamyungDataSourceV1<TRequest, TRequest> - 因此它的響應類型是TRequest。也許第二個參數應該是TResponse

相關問題