2013-05-14 45 views
0

眼下的方法,我做這個傳遞一個C#動態對象,它接受一個I​​Dictionary的

var data = new JobDataMap(new Dictionary<string,string> { {"obj", "stringify"} }); 

但我想這樣做:

dynamic d = new { obj = "stringify" }; 
var data = new JobDataMap(d); 

有一些祕密的語法糖那會讓我做到這一點?

+0

不,它不是可能就是這樣。但是,爲什麼不用動態對象添加到JobDataMap中? – Styxxy

+0

也許你可以使用['RouteValueDictionary'](http:// msdn.microsoft.com/en-us/library/cc680272.aspx')。 – Silvermind

回答

1

有沒有這樣做的神奇方式。編譯器無法知道Dynamic對象在編譯時是否真的是Dictionary。

話雖這麼說,你可以創建一個將其轉換爲一個字典的擴展方法,這樣你可以做這樣的事情:

dynamic d = new { obj = "stringify" }; 
var data = new JobDataMap(d.ToDictionary()); 

我這篇文章提供了一個例子:http://blog.andreloker.de/post/2008/05/03/Anonymous-type-to-dictionary-using-DynamicMethod.aspx

+0

或者可能是一個重載的構造函數,它接受該項並創建一個字典。 – Gauthier

+0

是的,這實際上更容易 – Kenneth

+0

很酷,我想這可能是不可能的。也許有更簡潔的方式來定義我的字典嗎? –

相關問題