C# 将空委托传递给c中的方法#

C# 将空委托传递给c中的方法#,c#,delegates,C#,Delegates,我需要了解如何通过将空委托函数作为参数传递来调用方法。具体来说,我需要调用的方法定义为: private async Task<Tuple<VerifiedResult<IEnumerable<T>>, string >> SendRequest<T>(string url, string message, Func<IDictionary<string, string>, T> resultFunc) wher

我需要了解如何通过将空委托函数作为参数传递来调用方法。具体来说,我需要调用的方法定义为:

private async Task<Tuple<VerifiedResult<IEnumerable<T>>, string >> SendRequest<T>(string url, string message, Func<IDictionary<string, string>, T> resultFunc) where T : new()
{
...
}
无需解释SendRequest方法的作用,但它使用我传递的resultFunc来执行一些额外的逻辑。 但是,在某种情况下,该方法在调用Func之前返回。因此,我需要通过传递一个空函数来调用SendRequest方法

我试过:

 await SendRequest(dataSource.Location, soapTemplate, () => { });

但我收到的编译错误是:“无法从用法推断SendRequest方法的类型参数。请尝试明确指定类型参数”。调用SendRequest方法时如何传递空Func?

委托类型为:

Func<IDictionary<string, string>, T> resultFunc
当您使用lambda时,它们的参数类型和返回类型将根据您将lambda分配给的对象和返回的对象进行推断。您必须确保您的lambda与相同的签名兼容


tl;dr修改lambda以获取参数并返回一些内容,如
\u=>0

如果要保持类型推断,只需传递
x=>default(T)
,例如
x=>default(VerifiedResult)
。在上下文中,它看起来是这样的:

var result = await SendRequest
(
    dataSource.Location, 
    soapTemplate, 
    x => default(SomeSpecificReponseClass<SomeType>)
);
var result=等待发送请求
(
数据源。位置,
soapTemplate,
x=>默认值(SomeSpecificResponseClass)
);

您不是只需要
r=>null
?在调用方法的地方,它希望返回一个对象。希望null就足够了,但是如果不编辑它的使用位置,就无法绕过它。听起来应该有两个
SendRequest
重载,一个产生结果,另一个不产生结果,并带有要匹配的签名。@TyCobb这会破坏类型推断。@Servy-Ah-yes。然后他去战壕!如果要保持类型推断,只需传递
x=>default(T)
,例如
x=>default(VerifiedResult)
T Foo(IDictionary<string,string> dict);
var result = await SendRequest
(
    dataSource.Location, 
    soapTemplate, 
    x => default(SomeSpecificReponseClass<SomeType>)
);