C# 无法使用fieldinfo访问对象字段

C# 无法使用fieldinfo访问对象字段,c#,reflection,observablecollection,C#,Reflection,Observablecollection,我有一个方法,它接收对象的可观察集合(从Web服务返回),并根据它们的属性对它们进行分析 下面是该方法的代码片段 私有双重分析(ObservableCollection mobjColl) { FieldInfo fi = null; foreach (MyApp.MyObj oi in mobjColl) { if(oi.pressure.Equals("high"){ fi = oi.GetType

我有一个方法,它接收对象的可观察集合(从Web服务返回),并根据它们的属性对它们进行分析

下面是该方法的代码片段

私有双重分析(ObservableCollection mobjColl) {

        FieldInfo fi = null;

        foreach (MyApp.MyObj oi in mobjColl)
        {

        if(oi.pressure.Equals("high"){

            fi = oi.GetType().GetField("air");

            .....
        }
        }
        return someval;
    }
我的问题是fieldinfo fi始终为空。我可以使用对象名称访问对象的每个字段(在foreach中),但fieldinfo对象从未填充。我甚至尝试使用GetFields方法,但它不返回数组


注:对象字段是公共字段。在getfield中使用bindingflags也没有帮助。

相反,请尝试以下方法:


oi.GetType().GetField(“air”,BindingFlags.Instance | BindingFlags.NonPublic);

字段air是私有的吗?如果是这样,您必须使用GetField重载,它接受BindingFlags参数并指定NonPublic

fi = oi.GetType().GetField("air", BindingFlags.NonPublic | BindingFlags.Instance);

如果该字段不是公共字段,则可能需要使用BindingFlags,因为默认情况下只包括公共字段

fi = oi.GetType().GetField("air", BindingFlags.Instance | BindingFlags.NonPublic);

我不相信从web服务返回的对象会公开公共字段。你可能会想到属性。如果你尝试
GetProperty(“air”)
,你可能会得到一些回报。

Hi,,我忘了提到…字段是公共的。。我试过使用绑定标志,但也没用。…thanx