/// <summary> /// Create and return a new Link object for member /// </summary> /// <param name="field">The member</param> /// <param name="model">Model with the link</param> private static ModelDoc.Link DocumentLink(FieldInfo field, IModel model) { ModelDoc.Link link = new ModelDoc.Link(); link.Name = field.Name; if (field.FieldType.IsGenericType && field.FieldType.GetInterface("IList") != null) { link.TypeName = "List<" + field.FieldType.GenericTypeArguments[0].Name + ">"; } else { link.TypeName = field.FieldType.Name; } UnitsAttribute units = field.GetCustomAttribute <UnitsAttribute>(); if (units != null) { link.Units = units.ToString(); } DescriptionAttribute description = field.GetCustomAttribute <DescriptionAttribute>(); if (description != null) { link.Description = description.ToString(); } LinkAttribute linkAtt = field.GetCustomAttribute <LinkAttribute>(); link.IsOptional = linkAtt.IsOptional; object linkedObject = field.GetValue(model); if (linkedObject != null) { if (linkedObject is IModel) { link.LinkedModelName = Apsim.FullPath(linkedObject as IModel); } else { } } return(link); }
/// <summary> /// Create and return a new Link object for member /// </summary> /// <param name="field">The member</param> /// <param name="model">Model with the link</param> private static ModelDoc.Link DocumentLink(FieldInfo field, IModel model) { ModelDoc.Link link = new ModelDoc.Link(); link.Name = field.Name; if (field.FieldType.IsGenericType && field.FieldType.GetInterface("IList") != null) link.TypeName = "List<" + field.FieldType.GenericTypeArguments[0].Name + ">"; else link.TypeName = field.FieldType.Name; UnitsAttribute units = field.GetCustomAttribute<UnitsAttribute>(); if (units != null) link.Units = units.ToString(); DescriptionAttribute description = field.GetCustomAttribute<DescriptionAttribute>(); if (description != null) link.Description = description.ToString(); LinkAttribute linkAtt = field.GetCustomAttribute<LinkAttribute>(); link.IsOptional = linkAtt.IsOptional; object linkedObject = field.GetValue(model); if (linkedObject != null) { if (linkedObject is IModel) link.LinkedModelName = Apsim.FullPath(linkedObject as IModel); else { } } return link; }