在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