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