Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 作为Func的参数传递时的异步方法<;T>;包装器方法中的占位符我得到编译错误_C#_Asp.net_.net - Fatal编程技术网

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;
}