2013-01-09 100 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

相关问题