[英]How to separate interface from implementation in nancy2.0?
正如您在此鏈接中看到的那樣,可以將舊的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 + "?";
}
而新的方式是:
???
在嘗試使用端點定義之后,您可以使用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"] + "?");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.