我有一个方法,它接受对象的可观察集合(从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始终为null。我可以使用对象名访问对象的每个字段(在foreach中),但是从不填充fieldinfo对象。我甚至尝试使用GetFields方法,但它不返回数组...
P.S:对象字段是公共的。在getfield中使用bindingflags也没有帮助。
答案 0 :(得分:1)
没有BindingFlags的GetField / GetFields只查找公共字段。我的猜测是“空气”是一个私人领域。
而是试试这个:
oi.GetType().GetField("air", BindingFlags.Instance | BindingFlags.NonPublic);
答案 1 :(得分:1)
我不相信从Web服务返回的对象会公开公共字段。你可能会考虑属性。如果你试试GetProperty("air")
,你可能会得到回报。
答案 2 :(得分:0)
现场空气是否私密?如果是这样,你将不得不使用GetField的重载,它接受BindingFlags参数并指定NonPublic
fi = oi.GetType().GetField("air", BindingFlags.NonPublic | BindingFlags.Instance);
答案 3 :(得分:0)
如果该字段不公开,您可能需要使用BindingFlags,因为默认情况下只包含公共字段。
fi = oi.GetType().GetField("air", BindingFlags.Instance | BindingFlags.NonPublic);