/// <summary> /// Provides the type associated to the name /// </summary> /// <param name="nameSpace">the namespace in which the name should be found</param> /// <param name="name"></param> /// <returns></returns> public Types.Type findType(Types.NameSpace nameSpace, string name) { Types.Type retVal = null; if (name != null) { if (nameSpace != null) { if (!cache.ContainsKey(nameSpace)) { cache[nameSpace] = new Dictionary <string, Types.Type>(); } Dictionary <string, Types.Type> subCache = cache[nameSpace]; if (!subCache.ContainsKey(name)) { Types.Type tmp = null; if (!Utils.Utils.isEmpty(name)) { tmp = nameSpace.findTypeByName(name); if (tmp == null) { if (DefinedTypes.ContainsKey(name)) { tmp = DefinedTypes[name]; } } if (tmp == null && DefinedTypes.ContainsKey("Default." + name)) { tmp = DefinedTypes["Default." + name]; } } if (tmp == null) { Log.Error("Cannot find type named " + name); } subCache[name] = tmp; } retVal = subCache[name]; } else { if (DefinedTypes.ContainsKey(name)) { retVal = DefinedTypes[name]; } else if (DefinedTypes.ContainsKey("Default." + name)) { retVal = DefinedTypes["Default." + name]; } } } return(retVal); }