public ReflectedParameterTypeInfo BuildType(Type type) { if(type == null) { return null; } var typeInfo = new ReflectedParameterTypeInfo(); if(type.IsGenericParameter) { typeInfo.IsGenericParameter = true; typeInfo.GenericParameter = _genericParameterProvider.GetGenericParameter(type.Name); return typeInfo; } typeInfo.Type = _getType(type); if(!type.IsGenericType) { return typeInfo; } typeInfo.IsGenericType = true; typeInfo.Parameters = (from parameter in type.GetGenericArguments() select BuildType(parameter)).ToList(); return typeInfo; }
public ReflectedParameterTypeInfo BuildType(Type type) { if (type == null) { return(null); } var typeInfo = new ReflectedParameterTypeInfo(); if (type.IsGenericParameter) { typeInfo.IsGenericParameter = true; typeInfo.GenericParameter = _genericParameterProvider.GetGenericParameter(type.Name); return(typeInfo); } typeInfo.Type = _getType(type); if (!type.IsGenericType) { return(typeInfo); } typeInfo.IsGenericType = true; typeInfo.Parameters = (from parameter in type.GetGenericArguments() select BuildType(parameter)).ToList(); return(typeInfo); }
private IEnumerable<ReflectedParameterTypeInfo> GetParents(ReflectedParameterTypeInfo type) { if(type == null) { yield break; } foreach(var parent in GetParents(type.Type.BaseType)) { yield return parent; } yield return type; }
private void BuildParameterMarkup(XDoc html, ReflectedParameterTypeInfo parameterType) { if(parameterType.IsGenericType) { if(IsTypeInDocumentation(parameterType.Type)) { html.Link(parameterType.Type.UriPath, parameterType.Type.Name); } else { html.Value(parameterType.Type.Name); } html.Value("<"); bool first = true; foreach(var childParam in parameterType.Parameters) { if(!first) { html.Value(","); } first = false; BuildParameterMarkup(html, childParam); } html.Value(">"); } else { if(!parameterType.IsGenericParameter && IsTypeInDocumentation(parameterType.Type)) { html.Link(parameterType.Type.UriPath, parameterType.DisplayName); } else { html.Value(parameterType.DisplayName); } } }