【问题标题】:Why is my method expecting the wrong return type?为什么我的方法期望错误的返回类型?
【发布时间】:2013-01-09 11:44:50
【问题描述】:

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

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??

【问题讨论】:

    标签: c# generics interface


    【解决方案1】:

    因为:

    private GetSamyungDataSourceV1<TRequest, TRequest> _getSamyungDataSourceV1;
    

    .. 应该是:

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

    ..否则,该类中的TResponseTRequest

    【讨论】:

    • 天哪,我怎么会错过这个。罗弗。谢谢。我只是需要另一双眼睛。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2011-12-27
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2016-08-30
      相关资源
      最近更新 更多