说我有这个对象:
dynamic foo = new ExpandoObject();
foo.bar = "fizz";
foo.bang = "buzz";
我如何删除foo.bang
例如?
我不想简单地将属性的值设置为null - 出于我的目的,我需要完全删除它。此外,我意识到我可以通过从第一个绘制kv对来创建一个全新的ExpandoObject,但这将是非常低效的。
答案 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");