在C#中,如何从ExpandoObject中删除属性?

时间:2013-01-23 23:52:45

标签: c# expandoobject

说我有这个对象:

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

我如何删除foo.bang例如?

我不想简单地将属性的值设置为null - 出于我的目的,我需要完全删除它。此外,我意识到我可以通过从第一个绘制kv对来创建一个全新的ExpandoObject,但这将是非常低效的。

4 个答案:

答案 0 :(得分:40)

将广告投放到IDictionary<string, object>并致电Remove

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

答案 1 :(得分:27)

您可以将ExpandoObject视为IDictionary<string, object>,然后将其删除:

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

答案 2 :(得分:12)

MSDN示例:

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

答案 3 :(得分:8)

您可以将其转换为IDictionary<string,object>,然后使用显式Remove方法。

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