gpt4 book ai didi

c# - 派生类型的 GetFields

转载 作者:太空狗 更新时间:2023-10-29 22:17:35 25 4
gpt4 key购买 nike

我试图反射(reflect)派生类型中的字段,但它返回的字段基本类型。

public class basetype
{
string basevar;
}

public class derivedtype : basetype
{
string derivedvar;
}

在一些函数中:

derivedtype derived = new derivedtype();

FieldInfo[] fields = derived.GetType().GetFields();

这将返回 basevar,但不返回 derivedvar。我已经尝试了所有不同的绑定(bind),但似乎没有什么不同。

此外,我在 App_Code 中的 ASP.NET 中执行此操作,其中 basevar 在 App_Code 中定义,derivedvar 是在 App_Controls 中定义的用户控件,其中类型不在范围内。

最佳答案

照原样,这将不返回任何内容,因为默认绑定(bind)仅适用于公共(public)字段。

同样,derivedtype 不是从 basetype 派生的

与:

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();

关于c# - 派生类型的 GetFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3887257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com