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 回答