因为这个问题 在这里,, 我正在写一个自定义JsonConverter处理的情况类名单或收集,然后添加额外性。因此,一种办法是要忽略所有基类性质并仅仅列化这些在定义类。(从技术上讲,这不会起作用,因为如果你的子类的亚类,你休息序列号,但是它没有使我想知道...)

它可能是通过反射(嗯,我知道的答案是"是",因为反正是这么做的,但我不知道如何)只得到的成员定义的类本身作为反对那些继承了?例如...

public class MyBaseClass
{
    public string BaseProp1 { get; set; }
    public string BaseProp2 { get; set; }
}

public class MySubClass : MyBaseClass
{
    public string SubProp1 { get; set; }
    public string SubProp2 { get; set; }
}

在这种情况下,我想反映在 MySubClass 且只能得到 SubProp1SubProp2 而忽略了 BaseProp1BaseProp2.所以 可以,可以 这怎么做的?

M

有帮助吗?

解决方案

同时呼吁"GetMembers"的方法来获得成员的类型,可以指定"DeclaredOnly"具有约束力的标志。

其他提示

你有选择的所有成员在 MySubClass 并且只保留那些在哪里 DeclaringType == MySubClass.

与皇宫,类似的东西(矫枉过正):

MemberInfo[] notInherited = GetType("MySubClass").GetMembers().Where(m => m.DeclaringType == GetType("MySubClass"));

GetMembers() 过载:

MemberInfo[] notInherited = GetType("MySubClass").GetMembers(BindingFlags.DeclaredOnly);

很多反映功能接受一个参数的类型 BindingFlags.这枚举,包括一个值DeclaredOnly:

指定的唯一成员宣布,在水平提供的类型的层次结构应予以考虑。继承的成员都没有考虑。

MemberInfo.DeclaringType 应该做你需要什么。获得直接成员的定义类型X过滤器成员通过 DeclaringType == typeof(X).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top