1

2つのパラメーターを受け取るように定義されたメソッドがあります。1つはジェネリック型で、もう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);

しかし、次のようなエラーが発生します。

「'TRequestBuildResponse(IDataRecord)'のメソッドが必要です

TResponseではなくTRequestをリターンとして期待しているのはなぜですか?

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

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 です。おそらく、2 番目の型引数をTResponse代わりに使用する必要があります。

于 2013-01-09T03:44:50.407 に答える