以下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;
}
}
答案 0 :(得分:3)
来自南希文件:
路由Action是在请求与路由匹配时调用的行为。它是由<{1}} 类型的lambda表达式表示的,其中动态输入是
Func<dynamic, dynamic>
,这是一种在Nancy中定义的特殊动态类型,详情请参阅DynamicDictionary
。
所以,您可以简单地执行以下操作:
DynamicDictionary
Get["/products/{id}"] = DoSomething;
定义为:
DoSomething