Mar*_*eIV 19 c# reflection subclass base-class class-members
由于此问题在这里,我想编写处理,你继承列表或集合,然后额外的属性,将其添加的情况下自定义JsonConverter.因此,一种方法是忽略所有基类属性,并仅序列化已定义类中的属性.(从技术上讲这不会起作用,因为如果你继承了那个子类,你就会破坏序列化,但它确实让我想知道......)
是否有可能通过反射(我知道答案是肯定的,因为Reflector正是如此,但我不知道如何)只获得在类本身定义的成员而不是继承的成员?例如...
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; }
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想反映的MySubClass,只有获得SubProp1和SubProp2而忽略BaseProp1和BaseProp2.所以,可以说是如何做呢?
中号
Ank*_*kur 28
在调用"GetMembers"方法来获取Type的成员时,可以在绑定标志中具体指定"DeclaredOnly".
use*_*016 10
您必须选择所有成员MySubClass并仅保留其中的成员DeclaringType == MySubClass.
使用LINQ,类似的东西(矫枉过正):
MemberInfo[] notInherited = GetType("MySubClass").GetMembers().Where(m => m.DeclaringType == GetType("MySubClass"));
Run Code Online (Sandbox Code Playgroud)
或者GetMembers()过载:
MemberInfo[] notInherited = GetType("MySubClass").GetMembers(BindingFlags.DeclaredOnly);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8323 次 |
| 最近记录: |