C# 作为Func的参数传递时的异步方法<;T>;包装器方法中的占位符我得到编译错误
我有一个包装器方法C# 作为Func的参数传递时的异步方法<;T>;包装器方法中的占位符我得到编译错误,c#,asp.net,.net,C#,Asp.net,.net,我有一个包装器方法 public static T WebMethodWrapper<T>(this ApplicationService applicationService, Func<T> webMethod) { //Do Something... } public static T WebMethodWrapper(此应用程序服务ApplicationService,Func webMethod) { //做点什么。。。 } 我想使用此服务方法包装we
public static T WebMethodWrapper<T>(this ApplicationService applicationService, Func<T> webMethod)
{
//Do Something...
}
public static T WebMethodWrapper(此应用程序服务ApplicationService,Func webMethod)
{
//做点什么。。。
}
我想使用此服务方法包装web方法调用,如下所示。尝试使用此方法时,我收到一个编译错误,提示“无法从用法推断方法的类型参数。请尝试显式指定类型参数。”
公共异步任务DoSomeMethodAsync(int-param1、int-param2、List-param3)
{
返回新的WebMethodWrapper(
异步任务()=>DoSomeWorkMethodAsync(参数1、参数2、参数3)
);
}
专用异步任务DoSomeWorkMethodAsync(int-param1、int-param2、List-param3)
{
//做些逻辑分析
返回true;
}
我在这里做错了什么?您的方法签名显示
任务
,但您正在返回一个新的WebMethodWrapper
。首先,您为什么要这样做?您的方法是针对ApplicationService
的扩展方法。如果您想作为普通方法使用,您应该为第一个参数传递applicationService,第二个参数是您的参数Func@HasanEmrahSüngü我有一个对DoSomeMethodAsync()的UI ajax调用,这应该会返回bool。我有一个私有方法DoSomeWorkMethodAsync(),它返回任务。WebMethodWraper是一种扩展方法,它提供了一些应用程序级日志记录和一些其他功能。如何桥接这些?如果WebMethodWrapper是一个扩展,您如何才能新建WebMethodWrapper
,您需要向我们展示更多的代码。现在很难猜到您的方法签名是任务
,但您返回的是新的WebMethodWrapper
。首先,您为什么要这样做?您的方法是针对ApplicationService
的扩展方法。如果您想作为普通方法使用,您应该为第一个参数传递applicationService,第二个参数是您的参数Func@HasanEmrahSüngü我有一个对DoSomeMethodAsync()的UI ajax调用,这应该会返回bool。我有一个私有方法DoSomeWorkMethodAsync(),它返回任务。WebMethodWraper是一种扩展方法,它提供了一些应用程序级日志记录和一些其他功能。如何桥接这些?如果WebMethodWrapper是一个扩展,您如何才能新建WebMethodWrapper
,您需要向我们展示更多的代码。现在真的很难猜测
public async Task<bool> DoSomeMethodAsync(int param1, int param2, List<int> param3)
{
return new WebMethodWrapper(
async Task<bool>() => DoSomeWorkMethodAsync(param1, param2, param3)
);
}
private async Task<bool> DoSomeWorkMethodAsync(int param1, int param2, List<int> param3)
{
//Do Some Logic
return true;
}