예제 #1
0
        internal MrType GetTypeFromName(string fullName)
        {
            if (_nameToMrType != null && _nameToMrType.TryGetValue(fullName, out var type))
            {
                return(type);
            }

            if (IsFakeAssembly)
            {
                type = MrType.CreateFakeType(fullName, this);
                if (_nameToMrType == null)
                {
                    _nameToMrType = new Dictionary <string, MrType>();
                }
                _nameToMrType[fullName] = type;
                return(type);
            }
            else
            {
                // The type isn't in this assembly, but there may be a forwarder for it
                var forwardingAssembly = GetForwardingAssemblyForType(fullName);
                if (forwardingAssembly != null)
                {
                    // Look up the type at that forwarding address
                    return(_loadContext.GetTypeFromAssembly(fullName, forwardingAssembly));
                }
            }

            throw new Exception("Type not found");
        }
예제 #2
0
        internal MrType GetTypeFromName(string fullName)
        {
            if (_nameToMrType != null && _nameToMrType.TryGetValue(fullName, out var type))
            {
                return(type);
            }

            if (IsFakeAssembly)
            {
                type = MrType.CreateFakeType(fullName, this);
                if (_nameToMrType == null)
                {
                    _nameToMrType = new Dictionary <string, MrType>();
                }
                _nameToMrType[fullName] = type;
                return(type);
            }

            throw new Exception("Type not found");
        }