在C#中,如何删除从ExpandoObject的属性?(In C#, how do I remove

2019-07-18 14:43发布

说我有这样的对象:

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

我将如何删除foo.bang的例子吗?

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

Answer 1:

铸的expando到IDictionary<string, object>并调用Remove

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


Answer 2:

你可以把该ExpandoObject作为IDictionary<string, object>代替,然后将其删除这种方式:

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


Answer 3:

MSDN实施例:

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


Answer 4:

可以将它转换为一个IDictionary<string,object> ,然后使用显式删除方法。

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


文章来源: In C#, how do I remove a property from an ExpandoObject?