2010-10-19 67 views
0

受啓發:
NServiceBus.Configure.With()。Log4Net(a => a.YourProperty =「value」);我該如何創建這個Func?

我想使用類似配置的東西,歡迎提出建議。我最大的問題是,我不能完全弄清楚如何使用參數輸入...

這裏究竟發生了什麼?例如,NServiceBus使用Log4Net嗎?設置YourProperty =值?

請從NServiceBus等抽象我剛纔提供作爲討論的基礎。

+1

看到[這個問題](http://stackoverflow.com/questions/1718037/abuse-of-c-lambda-expressions-or-syntax-brilliance)它解釋了發生了什麼(並討論如果這是一個好主意或不) – Cameron 2010-10-19 20:41:43

+0

.Attributes(style =>「width:100%」) 我認爲這是另一種風格,因爲你在這裏沒有使用屬性,而是一種不強大的類型。 – Janus007 2010-10-19 21:14:00

回答

1

lambda正在創建一個表達式樹,它不是代碼,而是關於lambda應該做什麼的元數據。

因此,您可以「拆開」lambda並查看哪些屬性,方法等將在該實例上訪問(從來不存在,因爲它只是一個定義)。

Google for "expression tree .net"您將在該主題上找到lot of info

+0

嗨Lucero,謝謝你指着我一個叫做Google *的搜索引擎*你有什麼告訴我我完全知道,但是我有興趣知道這個方法看起來像什麼樣的,它實際上可以處理這樣的輸入以及它如何處理它: ) – Janus007 2010-10-19 21:16:26

+0

嗨Lucero ... 我想我現在開始瞭解......但我有一個問題,但!我怎樣才能設置價值?我已經寫了好幾年的表達,但是他們使用平等的,這個使用財產。 它應該是這樣的:Expression > predicate – Janus007 2010-10-19 21:55:38

+0

對不起,如果我發佈了你已經知道的東西。很多人都不知道lambda沒有直接被C#編譯器編譯爲IL代碼,而是它們實際上是一個抽象語法樹,可以解析,修改並最終編譯爲IL。至於訪問屬性,看看http://msdn.microsoft.com/en-us/library/system.linq.expressions.expression.property.aspx(對不起,另一個鏈接到MSDN的跛腳);) – Lucero 2010-10-19 22:05:30