private static void FillMethodsTable(ValueTable.ValueTable result, IEnumerable <MethodInfo> methods) { var nameColumn = result.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var countColumn = result.Columns.Add("КоличествоПараметров", TypeDescription.IntegerType(), "Количество параметров"); var isFunctionColumn = result.Columns.Add("ЭтоФункция", TypeDescription.BooleanType(), "Это функция"); var annotationsColumn = result.Columns.Add("Аннотации", new TypeDescription(), "Аннотации"); var paramsColumn = result.Columns.Add("Параметры", new TypeDescription(), "Параметры"); var isExportlColumn = result.Columns.Add("Экспорт", new TypeDescription(), "Экспорт"); foreach (var methInfo in methods) { ValueTableRow new_row = result.Add(); new_row.Set(nameColumn, ValueFactory.Create(methInfo.Name)); new_row.Set(countColumn, ValueFactory.Create(methInfo.ArgCount)); new_row.Set(isFunctionColumn, ValueFactory.Create(methInfo.IsFunction)); new_row.Set(isExportlColumn, ValueFactory.Create(methInfo.IsExport)); new_row.Set(annotationsColumn, methInfo.AnnotationsCount != 0 ? CreateAnnotationTable(methInfo.Annotations) : EmptyAnnotationsTable()); var paramTable = new ValueTable.ValueTable(); var paramNameColumn = paramTable.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var paramByValue = paramTable.Columns.Add("ПоЗначению", TypeDescription.BooleanType(), "По значению"); var paramHasDefaultValue = paramTable.Columns.Add("ЕстьЗначениеПоУмолчанию", TypeDescription.BooleanType(), "Есть значение по-умолчанию"); var paramAnnotationsColumn = paramTable.Columns.Add("Аннотации", new TypeDescription(), "Аннотации"); new_row.Set(paramsColumn, paramTable); if (methInfo.ArgCount != 0) { var index = 0; foreach (var param in methInfo.Params) { var name = string.Format("param{0}", ++index); var paramRow = paramTable.Add(); paramRow.Set(paramNameColumn, ValueFactory.Create(name)); paramRow.Set(paramByValue, ValueFactory.Create(param.IsByValue)); paramRow.Set(paramHasDefaultValue, ValueFactory.Create(param.HasDefaultValue)); paramRow.Set(paramAnnotationsColumn, param.AnnotationsCount != 0 ? CreateAnnotationTable(param.Annotations) : EmptyAnnotationsTable()); } } } }