ExpandoObject
では、IDictionary<string, object>
にExpandoObject
インスタンスをキャストを経由して(などの予約語、スペース、でも空の文字列を含む)プロパティ名として任意の文字列値を使用することができます:
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