public int CompareTo(ApiModel other) { if (other == default) { return(1); } if (Kind.IsType() && other.Kind.IsMember()) { return(-1); } if (Kind.IsMember() && other.Kind.IsType()) { return(1); } if (Kind.IsMember() && other.Kind.IsMember()) { var result = Kind.CompareTo(other.Kind); if (result != 0) { return(result); } } if (Kind == ApiKind.Namespace && other.Kind == ApiKind.Namespace) { var orderReversed = new[] { "Windows", "Microsoft", "System", }; var topLevel = GetTopLevelNamespace(Name); var otherTopLevel = GetTopLevelNamespace(other.Name); var topLevelIndex = Array.IndexOf(orderReversed, topLevel); var otherTopLevelIndex = Array.IndexOf(orderReversed, otherTopLevel); var result = -topLevelIndex.CompareTo(otherTopLevelIndex); if (result != 0) { return(result); } } if (GetMemberName(Name) == GetMemberName(other.Name)) { var typeParameterCount = GetTypeParameterCount(Name); var otherTypeParameterCount = GetTypeParameterCount(other.Name); var result = typeParameterCount.CompareTo(otherTypeParameterCount); if (result != 0) { return(result); } var parameterCount = GetParameterCount(Name); var otherParameterCount = GetParameterCount(other.Name); result = parameterCount.CompareTo(otherParameterCount); if (result != 0) { return(result); } } return(Name.CompareTo(other.Name));
public string GetMemberName() { return(Kind.IsMember() ? Name : string.Empty); }