我有一个定义为接收两个参数的方法。一个是泛型类型,另一个是具有泛型返回类型的函数:
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 ??
答案 0 :(得分:3)
因为:
private GetSamyungDataSourceV1<TRequest, TRequest> _getSamyungDataSourceV1;
..应该是:
private GetSamyungDataSourceV1<TRequest, TResponse> _getSamyungDataSourceV1;
// ^^^ this.
..否则,该类中的TResponse
为TRequest
。
答案 1 :(得分:1)
因为_getSamyungDataSourceV1被声明为GetSamyungDataSourceV1<TRequest, TRequest>
- 因此它的响应类型是TRequest。也许第二种类型的参数应该是TResponse
。