[英]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.