可能重复: 为什么C#不推断我的泛型?
假设我们有这样一个方法和一个类:
Result<TOut> SendMessage<TIn, TOut>(TIn message)
where TIn : IMessage<TOut>
{
}
class Message : IMessage<string>
{
}为什么当我这样调用它时,它不能解析类型:
var message = new Message();
var result = SendMessage(message);我们有锡,我们对锡也有限制,所以从那里我们就可以知道如何推销。但为什么不起作用?
如果我写
var result = SendMessage<Message, string>(message);这显然有效,但这不太方便。
发布于 2012-11-24 09:13:52
基于规格说明,类型推断发生在输入参数上,而不是返回类型。
可以通过在参数列表中包含输出泛型类型参数来解决问题:
public static Result<TOut> SendMessage<TOut>(IMessage<TOut> message)发布于 2012-11-24 08:43:31
我认为这是泛型方法的语法规则。如果将方法声明为泛型,则始终需要在调用该方法时提供该类型。
https://stackoverflow.com/questions/13539594
复制相似问题