Beispiel #1
0
        public static string[][] OptionsForPreposition(Type typeOfPreposition)
        {
            string[][] result;
            if (prepositionOptions.TryGetValue(typeOfPreposition, out result))
            {
                return(result);
            }

            string[][] newEntry;
            lock (typeof(TextParsing)) //Make sure the ResourceCollection is up to date by the time we set prepositionOptions.
            {
                ResourceCollection collection = GetCollection(typeOfPreposition);
                if (typeof(EnumClass <>).IsAssignableFrom(typeOfPreposition))
                {
                    //FieldInfo field = typeOfPreposition.GetMethod("backingMetaData", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
                    //EnumMetaData field.GetValue(null);
                    EnumClass[] objects = EnumClass.GetValues(typeOfPreposition);

                    newEntry = new string[objects.Length][];
                    for (int i = 0; i < objects.Length; i++)
                    {
                        string   name    = objects[i].Name;
                        string   list    = collection.GetValue(name);
                        string[] options = list.Split(',');
                        newEntry[i] = options;
                    }
                }
                else
                {
                    Array values = Enum.GetValues(typeOfPreposition);
                    newEntry = new string[values.Length][];
                    for (int i = 0; i < values.Length; i++)
                    {
                        string   name    = Enum.GetName(typeOfPreposition, values.GetValue(i));
                        string   list    = collection.GetValue(name);
                        string[] options = list.Split(',');
                        newEntry[i] = options;
                    }
                }
                prepositionOptions[typeOfPreposition] = newEntry;
            }

            return(newEntry);
        }