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

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

3

因为这:

private GetSamyungDataSourceV1<TRequest, TRequest> _getSamyungDataSourceV1;

.. 应该:

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

..否则,TResponse在那个类中是一个TRequest.

于 2013-01-09T03:42:25.263 回答
1

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

于 2013-01-09T03:44:50.407 回答