このオブジェクトがあるとしましょう:
dynamic foo = new ExpandoObject();
foo.bar = "fizz";
foo.bang = "buzz";
どうすれば削除できますかfoo.bang
例えば?
プロパティの値を単にnullに設定したくありません-私の目的のために、完全に削除する必要があります。また、最初からkvペアを描画することでまったく新しいExpandoObjectを作成できることも理解していますが、それはかなり非効率的です。
ExpandoをIDictionary<string, object>
にキャストし、 Remove
を呼び出します。
var dict = (IDictionary<string, object>)foo;
dict.Remove("bang");
代わりに ExpandoObject
を IDictionary<string, object>
として扱い、その方法で削除することができます。
IDictionary<string, object> map = foo;
map.Remove("Jar");
MSDNの例:
dynamic employee = new ExpandoObject();
employee.Name = "John Smith";
((IDictionary<String, Object>)employee).Remove("Name");
これをIDictionary<string,object>
としてキャストし、明示的な Remove メソッドを使用できます。
IDictionary<string,object> temp = foo;
temp.Remove("bang");