中。净的,你可以使用反映获得的所有无继承方法的一个类?
-
28-10-2019 - |
题
因为这个问题 在这里,, 我正在写一个自定义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
且只能得到 SubProp1
和 SubProp2
而忽略了 BaseProp1
和 BaseProp2
.所以 可以,可以 这怎么做的?
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)
.
不隶属于 StackOverflow