簡體   English   中英

如何繞過投射到 FieldInfo?

[英]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 ObjectParam所有Param ,無論類型Object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM