2013-01-23 12 views
19

は、私は、このオブジェクトを持って言いますか?C#ではExpandoObjectからプロパティを削除するにはどうすればよいですか?</p> <pre><code>dynamic foo = new ExpandoObject(); foo.bar = "fizz"; foo.bang = "buzz"; </code></pre> <p>どのように私は、例えば<code>foo.bang</code>を削除します:

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

答えて

28

IDictionary<string, object>にはExpandoをキャストし、Removeを呼び出す:

var dict = (IDictionary<string, object>)foo; 
dict.Remove("bang"); 
21

あなたが代わりにIDictionary<string, object>としてExpandoObjectを処理した後、そのように削除することができます。

IDictionary<string, object> map = foo; 
map.Remove("Jar"); 
+0

Fooのフォームメンバー 'ジャー' を削除する必要がある...セルフそれをFOOない.. – Dhana

+1

@Dhana:だから 'Jar'に' Foo'を変更:)私はこの例を更新しましたが、答えが働く方法を理解していれば、それを自分で修正するのは難しくありません。 –

+0

@Skeet:本当に素敵です..、ありがとう。 – Dhana

7

あなたのようにそれをキャストすることができますIDictionary<string,object>を入力し、明示的なRemoveメソッドを使用します。

IDictionary<string,object> temp = foo; 
temp.Remove("bang"); 
8

MSDN例:

dynamic employee = new ExpandoObject(); 
employee.Name = "John Smith"; 
((IDictionary<String, Object>)employee).Remove("Name"); 
関連する問題

 関連する問題