Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }