小编dan*_*fer的帖子

编译器无法解析为预期的扩展方法

我今天注意到在尝试将内联lambda函数转换为闭包时,所以我可以在多个位置使用相同的lambda.这将编译为正确的扩展方法:

appBuilder.Use((ctx, next) => {
    Console.WriteLine("Test");
    return next();
});
Run Code Online (Sandbox Code Playgroud)

Use是一个由以下定义的扩展:

public static IAppBuilder Use(this IAppBuilder app, Func<IOwinContext, Func<Task>, Task> handler);
Run Code Online (Sandbox Code Playgroud)

现在,如果我做同样的事情,但将内联移动到变量:

Func<IOwinContext, Func<Task>, Task> handler = (ctx, next) => {
        Console.WriteLine("Test");
        return next();
    };
appBuilder.Use(handler);
Run Code Online (Sandbox Code Playgroud)

编译器解析为此方法(不是扩展名):

IAppBuilder Use(object middleware, params object[] args);
Run Code Online (Sandbox Code Playgroud)

我在这做什么导致该方法更改签名?

提前致谢.

.net c# lambda owin katana

3
推荐指数
3
解决办法
238
查看次数

标签 统计

.net ×1

c# ×1

katana ×1

lambda ×1

owin ×1