Ответ 1
Переместите expando на IDictionary<string, object>
и вызовите Remove
:
var dict = (IDictionary<string, object>)foo;
dict.Remove("bang");
Скажем, у меня есть этот объект:
dynamic foo = new ExpandoObject();
foo.bar = "fizz";
foo.bang = "buzz";
Как удалить foo.bang
например?
Я не хочу просто устанавливать значение свойства null - для моих целей мне нужно полностью удалить его. Кроме того, я понимаю, что я мог бы создать совершенно новый ExpandoObject путем рисования kv-пар из первого, но это было бы довольно неэффективно.
Спасибо!
Переместите 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");