Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C#动态对象传递给接受IDictionary的方法_C#_Quartz.net - Fatal编程技术网

将C#动态对象传递给接受IDictionary的方法

将C#动态对象传递给接受IDictionary的方法,c#,quartz.net,C#,Quartz.net,现在,我正在这样做 var data = new JobDataMap(new Dictionary<string,string> { {"obj", "stringify"} }); 有什么秘密的语法糖可以让我这么做吗?没有神奇的方法可以做到这一点。编译器无法在编译时知道动态对象实际上是一个字典 也就是说,您可以创建一个扩展方法,将其转换为字典,以便执行以下操作: dynamic d = new { obj = "stringify" }; var data = new JobD

现在,我正在这样做

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

有什么秘密的语法糖可以让我这么做吗?

没有神奇的方法可以做到这一点。编译器无法在编译时知道动态对象实际上是一个字典

也就是说,您可以创建一个扩展方法,将其转换为字典,以便执行以下操作:

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

这篇博客文章提供了一个例子:

不,这样是不可能的。但是为什么不使用某个键将动态对象添加到JobDataMap中呢?也许可以使用。或者可以使用重载构造函数来获取该项并创建字典。是的,这实际上很简单,我认为这可能不可能。有没有更简洁的方法来定义我的字典,也许?扩展方法是否适用于动态对象,或者d是否必须是匿名对象?您可以在对象上创建扩展方法。不过我不推荐。我会选择重载构造函数
dynamic d = new { obj = "stringify" };
var data = new JobDataMap(d.ToDictionary());