为什么"((动态)字典).MyKey"抛出RuntimeBinderException?

时间:2014-12-17 16:08:13

标签: c# dynamic dictionary

让我们想象一下这个简单的片段:

Dictionary<string,string> dictionary = new Dictionary<string, string>();
dictionary.Add("MyKey", "MyValue");

string val;
dictionary.TryGetValue("MyKey", out val);
Console.WriteLine(val); // print "MyValue"

Console.WriteLine(((dynamic)dictionary).MyKey); // throws a RuntimeBinderException

为什么在最后一行抛出 RuntimeBinderException

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

因为Dictionary<string, string>没有成员MyKey。动态类型不会动态创建成员。

为了正确看待,您尝试做的事情等同于((dynamic) dictionary).get_MyKey()。显然,字典没有get_MyKey()方法。