说我有这个对象:在C#中,我如何从ExpandoObject中删除属性?
dynamic foo = new ExpandoObject();
foo.bar = "fizz";
foo.bang = "buzz";
我怎么会删除foo.bang
例如?
我不想简单地将属性的值设置为空 - 为了我的目的,我需要将它完全删除。另外,我意识到我可以通过从第一个绘制kv对创建一个全新的ExpandoObject,但这样做效率很低。
说我有这个对象:在C#中,我如何从ExpandoObject中删除属性?
dynamic foo = new ExpandoObject();
foo.bar = "fizz";
foo.bang = "buzz";
我怎么会删除foo.bang
例如?
我不想简单地将属性的值设置为空 - 为了我的目的,我需要将它完全删除。另外,我意识到我可以通过从第一个绘制kv对创建一个全新的ExpandoObject,但这样做效率很低。
施放的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");
你可以将它转换为IDictionary<string,object>
,然后使用明确的Remove方法。
IDictionary<string,object> temp = foo;
temp.Remove("bang");
MSDN例子:
dynamic employee = new ExpandoObject();
employee.Name = "John Smith";
((IDictionary<String, Object>)employee).Remove("Name");
需要删除的成员 '罐子' 形成富..不是foo它的自我.., – Dhana
@Dhana:所以改变'Foo'到'Jar' :)我已经更新了这个例子,但是如果你明白答案的工作方式,它不应该很难自己解决它... –
@Skeet:非常好..谢谢。 – Dhana