为什么我的方法期望错误的返回类型?

时间:2013-01-09 03:38:39

标签: c# generics interface

我有一个定义为接收两个参数的方法。一个是泛型​​类型,另一个是具有泛型返回类型的函数:

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作为返回而不是TResponse ??

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:3)

因为:

private GetSamyungDataSourceV1<TRequest, TRequest> _getSamyungDataSourceV1;

..应该是:

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

..否则,该类中的TResponseTRequest

答案 1 :(得分:1)

因为_getSamyungDataSourceV1被声明为GetSamyungDataSourceV1<TRequest, TRequest> - 因此它的响应类型是TRequest。也许第二种类型的参数应该是TResponse