0

重複の可能性:
C# がジェネリック型を推論しないのはなぜですか?

そのようなメソッドとクラスがあるとしましょう:

Result<TOut> SendMessage<TIn, TOut>(TIn message)
    where TIn : IMessage<TOut>
{
}

class Message : IMessage<string> 
{
}

次のように呼び出すと、型を解決できないのはなぜですか。

var message = new Message();
var result = SendMessage(message);

Tin があり、Tin に制約があるため、そこから Tout を知ることができます。しかし、なぜ機能しないのですか?

私が書くなら

var result = SendMessage<Message, string>(message);

明らかに機能しますが、これはあまり便利ではありません。

4

2 に答える 2

0

仕様に基づいて、型推論は入力パラメーターで行われ、戻り値の型では行われません。

引数リストに出力ジェネリック型パラメーターを含めることで、問題を回避できます。

 public static Result<TOut> SendMessage<TOut>(IMessage<TOut> message)
于 2012-11-24T09:13:52.780 に答える
-2

ジェネリックメソッドの構文規則だと思います。メソッドをGenericとして宣言する場合は、メソッドを呼び出すときに常に型を指定する必要があります。

于 2012-11-24T08:43:31.483 に答える