private Type ResolveType(string typeName, Type type) { if (type != null && type.IsClass) { return(type); } if (KnownTypes != null) { var type2 = KnownTypes.FirstOrDefault(t => t.FullName == typeName); if (type2 != null) { return(type2); } } if (KnownAssemblies != null) { foreach (var asm in KnownAssemblies) { var type2 = asm.GetType(typeName, false); if (type2 != null) { return(type2); } } } var type3 = Type.GetType(typeName, true); return(type3); }
public KnownType GetTypeByName(string name) { if (TypesLookupCache.ContainsKey(name)) { return(TypesLookupCache[name]); } var patterns = WholeTypeCache.GetValueOrCompute(name, typeName => InternalGetTypeForName(typeName)) ?.PatternsRegexps; var result = KnownTypes.FirstOrDefault(c => c.SkriptRepresentations.Contains(name)) ?? KnownTypes.FirstOrDefault(t => patterns != null ? t.SkriptRepresentations.Any(r => patterns.Any(p => p.IsMatch(r))) : t.SkriptRepresentations.Contains(name)); if (result != null) { TypesLookupCache[name] = result; } return(result); }