예제 #1
0
            /// <summary>
            /// Gets the models name recursive.
            /// </summary>
            /// <param name="language">The language.</param>
            /// <param name="typeInstance">The type instance.</param>
            /// <returns></returns>
            private static IList <string> GetModelsNameRecursive(Language language, TypeInstance typeInstance)
            {
                List <string> list = new List <string>();

                // Si c'est un type de base, on ne le prend pas
                if (typeInstance.TypeKind != TypeKind.Type)
                {
                    return(list);
                }

                // Si c'est un générique, on cherche dans ses arguments les types potentiels
                if (typeInstance.IsGenericType)
                {
                    foreach (TypeInstance genericType in typeInstance.GenericArguments)
                    {
                        list.AddRange(GetModelsNameRecursive(language, genericType));
                    }
                }
                else
                {
                    string name = typeInstance.GetLookupName(language);
                    if (!name.StartsWith("System."))
                    {
                        // On s'assure de ne pas prendre un type système
                        if (Type.GetType(String.Format("System.{0}", name), false) == null)
                        {
                            list.Add(name);
                        }
                    }
                }

                return(list);
            }