簡體   English   中英

如何在nancy2.0中將接口與實現分開?

[英]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有幾個重載,所以編譯器需要這些提示來選擇合適的。 或者,如果方法返回任務它可以在不包裹來指定(## 23 ),例如異步方法總是返回任務:

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM