让我们想象一下这个简单的片段:
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 ?
感谢您的帮助!
答案 0 :(得分:2)
因为Dictionary<string, string>
没有成员MyKey
。动态类型不会动态创建成员。
为了正确看待,您尝试做的事情等同于((dynamic) dictionary).get_MyKey()
。显然,字典没有get_MyKey()
方法。