GetFieldsDerivedType我试图在派生类型中反映一个字段,但是它返回的是基类型的字段。公共类basetype{stringbasevar;}publicclassderivedtype:basetype{stringderivedvar;在某些函数中:derivedtypederived=newderivedtype();FieldInfo[]fields=derived.GetType().GetFields();这将返回basevar,但不返回derivedvar。我已经尝试了所有不同的绑定,但似乎没有什么不同。此外,我在App_Code中的ASP.NET中执行此操作,其中basevar在App_Code中定义,derivedvar是在App_Controls中定义的用户控件,其中类型超出范围。所以这将不会返回任何内容,因为默认绑定仅适用于公共字段。此外,派生类型不是从基类派生的P.S.:FieldInfo[]fields=derived.GetType().GetFields(BindingFlags.NonPublic|BindingFlags.Instance);它返回派生变量。我刚刚查看了LINQPad。如果我将derivedtype更改为从basetype派生,那么我可以使用以下方法获取两个字段:FieldInfo[]fields=derived.GetType().GetFields(BindingFlags.NonPublic|BindingFlags.Instance).Concat(derived.GetType().BaseType.GetFields(BindingFlags.NonPublic|BindingFlags.Instance)).ToArray();反射有点奇怪。如果成员是公开的,您可以看到整个层次结构中的所有成员。如果成员是非public,则必须指定BindingFlags.NonPublic,并且只获取使用类型的成员。继承成员不可见。如果你想看到一个类型的所有非公共成员,你将不得不沿着继承链往上走。以上就是C#学习教程:GetFields派生类型分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
