说我有这个对象:
dynamic foo = new ExpandoObject();
foo.bar = "fizz";
foo.bang = "buzz";
Run Code Online (Sandbox Code Playgroud)
我该如何删除foo.bang?
我不想简单地将属性的值设置为null - 为了我的目的,我需要完全删除它.此外,我意识到我可以通过从第一个绘制kv对来创建一个全新的ExpandoObject,但这将是非常低效的.
Jon*_*Jon 42
将expando转换为IDictionary<string, object>并调用Remove:
var dict = (IDictionary<string, object>)foo;
dict.Remove("bang");
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 27
您可以将其ExpandoObject视为IDictionary<string, object>替代,然后以这种方式删除它:
IDictionary<string, object> map = foo;
map.Remove("Jar");
Run Code Online (Sandbox Code Playgroud)
Sim*_*ead 12
MSDN示例:
dynamic employee = new ExpandoObject();
employee.Name = "John Smith";
((IDictionary<String, Object>)employee).Remove("Name");
Run Code Online (Sandbox Code Playgroud)
您可以将其强制转换为IDictionary<string,object>,然后使用显式的Remove方法.
IDictionary<string,object> temp = foo;
temp.Remove("bang");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18577 次 |
| 最近记录: |