[英]How can I get around casting to the FieldInfo?
我怎样才能绕过投射到 FieldInfo? 使用下面的代码,当派生的 class 具有 ie bool 变量时,它会抛出 InvalidCastException。 问题是它还返回 null 作为字段值。 (一切都发生在最后 5 行,但我粘贴更多内容)
{
string paramsData = ".";
if (param == null)
{
return paramsData;
}
BindingFlags bindingFlags = BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Instance |
BindingFlags.Static;
FieldInfo[] paramFields = param.GetType().GetFields(bindingFlags);
foreach (FieldInfo field in paramFields)
{
paramsData += field.Name;
Param child = (Param)field.GetValue(param);
paramsData += GetParamDataInChildren(child);
}
return paramsData;
}
很难知道您要实现什么目标,但看起来您应该在调用GetValue
之前检查字段的类型。 例如:
if (field.FieldType == typeof(Param))
{
Param child = (Param)field.GetValue(param);
paramsData += GetParamDataInChildren(child);
}
请注意,在这种情况下, child
仍然可能是 null,如果后续的 function 没有处理它,您应该检查它。
[编辑]如果您GetValue
Object
地Param
所有Param
,无论类型Object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.