MongoDB.Bson.Serialization.TypeNameDiscriminator.TryParseGenericTypeName C# (CSharp) Метод

TryParseGenericTypeName() приватный статический Метод

private static TryParseGenericTypeName ( string typeName, string &genericTypeDefinitionName, string &typeArgumentNames ) : bool
typeName string
genericTypeDefinitionName string
typeArgumentNames string
Результат bool
        private static bool TryParseGenericTypeName(string typeName, out string genericTypeDefinitionName, out string[] typeArgumentNames)
        {
            var leftBracketIndex = typeName.IndexOf('[');
            if (leftBracketIndex != -1)
            {
                genericTypeDefinitionName = typeName.Substring(0, leftBracketIndex);
                var typeArgumentNamesString = typeName.Substring(leftBracketIndex + 1, typeName.Length - leftBracketIndex - 2);
                var typeArgumentNamesList = new List<string>();
                var startIndex = 0;
                var nestingLevel = 0;
                for (var index = 0; index < typeArgumentNamesString.Length; index++)
                {
                    var c = typeArgumentNamesString[index];
                    switch (c)
                    {
                        case '[':
                            nestingLevel++;
                            break;
                        case ']':
                            nestingLevel--;
                            break;
                        case ',':
                            if (nestingLevel == 0)
                            {
                                var typeArgumentName = typeArgumentNamesString.Substring(startIndex, index - startIndex);
                                typeArgumentNamesList.Add(typeArgumentName);
                            }
                            break;
                    }
                }
                typeArgumentNamesList.Add(typeArgumentNamesString.Substring(startIndex));
                typeArgumentNames = typeArgumentNamesList.ToArray();
                return true;
            }

            genericTypeDefinitionName = null;
            typeArgumentNames = null;
            return false;
        }
    }