2017-04-27 92 views

回答

1

ExpandoObject你可以使用任何字符串值作爲屬性名(包括保留字,空格等,甚至空字符串),通過鑄造ExpandoObject實例IDictionary<string, object>

dynamic query = new ExpandoObject(); 
(query as IDictionary<string, object>)["bool"] = true; 
(query as IDictionary<string, object>)[" b o o (g)? l \"e:)\""] = false; 
(query as IDictionary<string, object>)[""] = true; 

您將無法訪問使用「純C#語法」這樣的性質(即obj.prop)。您必須將對象投射到IDictionary<string, object>並使用索引器訪問它們:

var qDict = query as IDictionary<string, object>; 
Console.WriteLine(qDict["bool"]); 
Console.WriteLine(qDict[" b o o (g)? l \"e:)\""]); 
Console.WriteLine(qDict[""]); 
// Prints: 
// True 
// False 
// True