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

说我有这个对象:

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

我如何删除foo.bang

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

将expando转换为IDictionary并调用Remove

 var dict = (IDictionary)foo; dict.Remove("bang"); 

您可以将ExpandoObject视为IDictionary ,然后将其删除:

 IDictionary map = foo; map.Remove("Jar"); 

MSDN示例:

 dynamic employee = new ExpandoObject(); employee.Name = "John Smith"; ((IDictionary)employee).Remove("Name"); 

您可以将其IDictionaryIDictionary ,然后使用显式的Remove方法。

 IDictionary temp = foo; temp.Remove("bang");