将C#动态对象传递给采用IDictionary的方法

时间:2013-05-14 22:55:47

标签: c# quartz.net

现在,我正在做这个

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

但我想这样做:

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

是否有一些秘密的语法糖可以让我这样做?

1 个答案:

答案 0 :(得分: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