Cake.Web.Core.Rendering.SyntaxRenderer.GetGenericParameterConstraints C# (CSharp) Метод

GetGenericParameterConstraints() приватный Метод

private GetGenericParameterConstraints ( DocumentedType type ) : List>.Dictionary
type Cake.Web.Docs.DocumentedType
Результат List>.Dictionary
        private Dictionary<string, List<IHtmlString>> GetGenericParameterConstraints(DocumentedType type)
        {
            var parameters = type.Definition.GenericParameters.Where(p =>
                p.HasConstraints || p.HasReferenceTypeConstraint ||
                p.HasDefaultConstructorConstraint || p.HasNotNullableValueTypeConstraint).ToArray();

            var result = new Dictionary<string, List<IHtmlString>>();
            if (parameters.Length > 0)
            {
                foreach (var parameter in parameters)
                {
                    var constraints = new List<IHtmlString>();
                    if (parameter.HasNotNullableValueTypeConstraint)
                    {
                        constraints.Add(MvcHtmlString.Create("struct"));
                    }
                    if (parameter.HasReferenceTypeConstraint)
                    {
                        constraints.Add(MvcHtmlString.Create("class"));
                    }
                    foreach (var constraint in parameter.Constraints)
                    {
                        if (constraint.FullName == "System.ValueType")
                        {
                            continue;
                        }
                        constraints.Add(_renderer.Render(constraint.GetTypeSignature(_urlResolver),
                            TypeRenderOption.Name | TypeRenderOption.Link));
                    }
                    if (parameter.HasDefaultConstructorConstraint && !parameter.HasNotNullableValueTypeConstraint)
                    {
                        constraints.Add(MvcHtmlString.Create("new()"));
                    }
                    result.Add(parameter.FullName, constraints);
                }
            }
            return result;
        }