【发布时间】:2009-05-03 19:35:31
【问题描述】:
我想删除通用对象中的所有空属性。它不一定是递归的,一层也可以。
我需要一个用于 JSON 序列化的自定义 JavascriptConvertor 实现的原因是:{"Name":"Aleem", "Age":null, "Type":"Employee"}
我想跳过空对象。
这个任务的函数接受对象并返回一个字典:
IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
所以我想从 obj 中删除所有 null 属性。所有属性都有getter,但如果没有设置属性,getter会返回null。
【问题讨论】:
-
如何删除成员?这个问题有点不清楚......
-
IIRC,“成员”也是属性和方法。所以我也不知道你会如何“删除”它们。
-
如果它们为空,那么就没有太多需要删除的东西了吗?
-
新 { Foo = "lol", Bar = null } 到新 { Foo = "lol" }?除非您在内存中创建自己的类型,否则不要认为这是可能的。匿名(通用?)类型是编译器的错觉,它在编译时创建类型......
-
嗯,方法不能为空。属性本身没有值(在字段的意义上),因此您必须调用 get 访问器来获取值。如果属性没有 get 访问器怎么办? aleemb 绝对需要解释更多才能让他的问题有意义。
标签: c# reflection