Подтвердить что ты не робот

В С#, как удалить свойство из ExpandoObject?

Скажем, у меня есть этот объект:

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

Как удалить foo.bang например?

Я не хочу просто устанавливать значение свойства null - для моих целей мне нужно полностью удалить его. Кроме того, я понимаю, что я мог бы создать совершенно новый ExpandoObject путем рисования kv-пар из первого, но это было бы довольно неэффективно.

Спасибо!

4b9b3361

Ответ 1

Переместите expando на IDictionary<string, object> и вызовите Remove:

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

Ответ 2

Вы можете рассматривать ExpandoObject как IDictionary<string, object>, а затем удалить его таким образом:

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

Ответ 3

Пример MSDN:

dynamic employee = new ExpandoObject();
employee.Name = "John Smith";
((IDictionary<String, Object>)employee).Remove("Name");

Ответ 4

Вы можете указать его как IDictionary<string,object>, а затем использовать явный метод Remove.

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