2012-07-30 39 views
2

我想了解c#動態。我有一個ExpandoObject實例分配給動態變量。 我明白ExpandoObject正在實現IDictionary。但下面的分配失敗。將數據添加到像ExpandoObject字典時出錯

dynamic obj = new ExpandoObject(); 
obj["Test"] = "TestValue"; 
Console.WriteLine(obj.Test); 

有人能告訴我我要去哪裏嗎?

obj.Test="TestValue"; 

但是,上述聲明似乎工作正常。

回答

1

爲此,您需要將ExpandoObject轉換爲IDictionary<string, object>

這是正常的Expando的用法:

obj.Test = "TestValue"; 

這是字符串文本(或字符串變量)用法:

var d = (IDictionary<string, object>)obj; 
d["Test"] = "TestValue"; 

string s = "Test"; 
d[s] = "TestValue"; 

如果接口的實現是明確的,你需要轉換爲參考的接口爲了訪問成員。我猜這就是發生在這裏的事情。