正如您在this link所看到的,可以将旧的nancy1.X模块的植根与实现分开。现在定义这些路线的方式已经改变,我想知道如何编写相同的分隔逻辑。
为清楚起见,定义Get
路线的旧方法是:
Get["/{category}"] = parameters => "My category is " + parameters.category;
新方法是:
Get("/{category}", args => "My category is " + args.category);
将接口与实现分开的旧方法是:
Get["/favoriteNumber/{value:int}"] = FavoriteNumber;
private dynamic FavoriteNumber (dynamic parameters)
{
return "So your favorite number is " + parameters.value + "?";
}
新方法是:
???
答案 0 :(得分:1)
尝试了端点定义之后,可以使用Func<dynamic,object>
类型规范(在下面## 0
)或方法的包装器(#1
)。那是因为Get
有几个重载,因此编译器需要这些提示来选择适当的提示。或者,如果方法返回任务,则可以不包装而指定它(## 2
,3
),例如异步方法总是返回任务:
Get("/favoriteNumber0/{value:int}", (Func<dynamic, object>)FavoriteNumberObject);
Get("/favoriteNumber1/{value:int}", arg => FavoriteNumber(arg));
Get("/favoriteNumber2/{value:int}", FavoriteNumberTask);
Get("/favoriteNumber3/{value:int}", FavoriteNumberTaskCt);
...
private object FavoriteNumberObject(dynamic parameters)
{
return "So your favorite number is " + parameters.value + "?";
}
private string FavoriteNumber(dynamic parameters)
{
return "So your favorite number is " + parameters.value + "?";
}
private Task<string> FavoriteNumberTask(dynamic parameters)
{
return Task.FromResult("So your favorite number is " + parameters["value"] + "?");
}
private Task<string> FavoriteNumberTaskCt(dynamic parameters, CancellationToken ctx)
{
return Task.FromResult("So your favorite number is " + parameters["value"] + "?");
}