private BodyTreeArray GetStructuredArray(ServiceParameter parameter, object structuredValueCollection, IDataExtractor dataExtractor) { var array = new BodyTreeArray { Parameter = parameter }; foreach (object item in (IEnumerable)structuredValueCollection) { var treeValue = GetParameterValue <BodyTreeObject>(parameter, item, dataExtractor); array.Add(treeValue); } return(array); }
private IBodyTreeItem GetParameterValue(ServiceParameter parameter, object value) { IBodyTreeItem result; if (parameter.IsArray) { if (value is IStructuredValue structuredValue) { object structuredValueCollection = structuredValue.Value; var dataExtractor = structuredValue.DataExtractor; result = GetStructuredArray(parameter, structuredValueCollection, dataExtractor); } else { if (value is IEnumerable collection) { var array = new BodyTreeArray { Parameter = parameter }; result = array; foreach (object item in collection) { var treeItem = CreateSimpleTreeNode(parameter, item); array.Add(treeItem); } } else { result = CreateSimpleTreeNode(parameter, value); } } } else if (value is IStructuredValue structuredValue) { result = GetParameterValue <BodyTreeNode>(parameter, structuredValue.Value, structuredValue.DataExtractor); } else { result = CreateSimpleTreeNode(parameter, value); } return(result); }