没有lambda表达式的路由

时间:2017-01-06 09:13:16

标签: c# lambda nancy

以下the official example用于在Nancy中注册路由。但是,如果我不想在该方法中“做某事”,而是在DoSomething()中进行,那该怎么办呢?

public class ProductsModule : NancyModule
{
    public ProductsModule()
    {
        Get["/products/{id}"] = _ =>
        {
            //do something
        };
    }
}

public abstract class NancyModule : INancyModule, IHideObjectMembers
{
    public RouteBuilder Get { get; }
}

public class RouteBuilder : IHideObjectMembers
{
    public RouteBuilder(string method, NancyModule parentModule);
    public Func<dynamic, dynamic> this[string path] { set; }
}

我不知道签名DoSomething应该有什么。这可以像下面这样工作吗?这不是我不能使用lambda表达式;我只是很好奇,因为南希使用的所有这些模式看起来都非常古怪和独特。

public class ProductsModule : NancyModule
{
    ???? DoSomething(????)
    {
        //do something
        return ????
    }

    public ProductsModule()
    {
        Get["/products/{id}"] = DoSomething;
    }
}

1 个答案:

答案 0 :(得分:3)

来自南希文件:

  

路由Action是在请求与路由匹配时调用的行为。它是由<{1}} 类型的lambda表达式表示的,其中动态输入是Func<dynamic, dynamic>,这是一种在Nancy中定义的特殊动态类型,详情请参阅DynamicDictionary

所以,您可以简单地执行以下操作:

DynamicDictionary

Get["/products/{id}"] = DoSomething; 定义为:

DoSomething