Трудно понять, чего вы пытаетесь достичь, но похоже, что вы должны проверять тип своего поля перед вызовом GetValue
. Например:
if (field.FieldType == typeof(Param))
{
Param child = (Param)field.GetValue(param);
paramsData += GetParamDataInChildren(child);
}
Обратите внимание, что child
все еще может быть нулевым в этом случае, и вы должны проверить это, если последующая функция не обрабатывает его.
[EDIT] Если вы пытаетесь рекурсивно получить все поля, независимо от типа, вы должны заставить свою рекурсивную функцию принимать Object
вместо Param
, и тогда вам не нужно приводить к Param
, поскольку GetValue
возвращает Object
.