請問 NET Core Web API裡,直接往構造器傳個Lambda表示式就能設定是怎麼做到的?

時間 2021-05-11 19:31:09

1樓:zanxas

說明你不了解lambda表示式的本質。

建構函式

public A(Action a){}

你也可以new A(()=>print ("helloworld"))

2樓:星風雪月

你要進行配置,配置放在配置物件中。配置物件由框架傳遞給你,你來對其任意修改,修改完後框架讀取配置並使用。

而「配置物件由框架傳遞給你,你來對其任意修改」這一操作,即是你所寫的lambda實現的。

3樓:Fanix

接收lambda表示式的方法引數是個委託,這裡其實用介面也能同樣實現設定的功能。但C#有委託這麼強大的語法幹嘛不省點事呢。因為你用介面就要實現介面,但委託不一樣,委託接收的是方法,通過傳遞乙個匿名方法(lambda表示式)進去實現了同樣的效果。

題外話,最厲害的不是這個注入方法的配置,最厲害的是startup下面中介軟體的的呼叫,利用了多播委託實現的連續執行註冊的方法。

4樓:你的觀眾

函式的引數要求傳入乙個委託型別,您就可以傳入乙個對應委託型別的函式,函式可以寫成lambda形式,如A=>,此時如果引數A可以是某個物件,或實現某介面的類的物件,那麼您就可以通過A點(A.)去訪問A的屬性或者方法,這個A就可以是定義好的類的物件,那麼這個物件A就能夠有很多定義好的屬性和方法

5樓:五十已到

注意看 AddController 方法的定義:

public

static

IMvcBuilder

AddControllers

(this

IServiceCollection

services

,Action

>configure

)首先,傳入的引數可以隨意命名,這裡相當於你寫乙個新的方法可以自定義引數名一樣。

void Add(int a, int b)void Add(int x, int y)以上兩個方法定義並無實際區別,引數名並不會作為方法簽名的一部分。

其次,有乙個引數並且無返回值的 Lambda 表示式會被轉化為 Action 委託,那我們在寫這段 Lambda 的時候已經知道了它的引數型別為 MvcOptions。

因此,setup 帶的屬性和方法都是來自於 MvcOptions 的。

請問Hadoop Spark Storm Flink的區別是什麼?分別適用什麼場景?

hadoop是乙個檔案系統,外加乙個離線處理框架 map reduce執行框架 主要用於海量資料檔案的儲存,非實時的海量資料的計算,不過由於提供的上層api不是太友好,加上mapreduce處理框架比較慢,現在基本上都拿它來作為檔案系統使用。spark是乙個執行引擎,本身不儲存資料,所以需要外部的檔...

請問 Eat clean, train sweaty 是什麼意思?什麼語法形式?

沒有查到相關的語法解釋。前半句有點兒類似 Play cool,play cute。有答案提到的stay是系動詞,和題目中的用法還是不同的。最好找大學老師問下吧。 答主非專業,只是推xia測cai了一下.Clean這裡是名詞的用法。同意樓上說的eat the clean things 類似於Do go...

請問tan tan x,arc tan(tan x),tan(arc tan x)都是怎麼算出來的?

Jameson tan tanx 這種就只能由內而外算,後兩個是反函式的性質,比如tanx有 0.25 1,那麼在arctanx就有1 0.25 因此arctan tan0.25 arctan1 0.25 tan arctan1 tan 0.25 1,可以簡單的理解為arctan tanx x,ta...