29

このオブジェクトがあるとします:

dynamic foo = new ExpandoObject();
foo.bar = "fizz";
foo.bang = "buzz";

foo.bangたとえば、 どのように削除しますか?

プロパティの値を単純に null に設定したくはありません。目的のために、プロパティを完全に削除する必要があります。また、最初から kv ペアを描画することでまったく新しい ExpandoObject を作成できることも認識していますが、それはかなり非効率的です。

4

4 に答える 4

53

expando をキャストしてIDictionary<string, object>呼び出しますRemove

var dict = (IDictionary<string, object>)foo;
dict.Remove("bang");
于 2013-01-23T23:55:25.287 に答える
34

代わりにを扱い、そのように削除することができExpandoObjectますIDictionary<string, object>

IDictionary<string, object> map = foo;
map.Remove("Jar");
于 2012-11-26T15:15:23.477 に答える
13

MSDN の例:

dynamic employee = new ExpandoObject();
employee.Name = "John Smith";
((IDictionary<String, Object>)employee).Remove("Name");
于 2013-01-23T23:55:56.367 に答える
8

としてキャストしてからIDictionary<string,object>、明示的なRemoveメソッドを使用できます。

IDictionary<string,object> temp = foo;
temp.Remove("bang");
于 2013-01-23T23:55:27.307 に答える