Пример #1
0
            public PEFile Resolve(IAssemblyReference name)
            {
                lock (this)
                {
                    if (cache.TryGetValue(name.FullName, out var module))
                    {
                        return(module);
                    }

                    //look in the base module's embedded resources
                    var resName = name.Name + ".dll";
                    var res     = baseModule.Resources.Where(r => r.ResourceType == ResourceType.Embedded).SingleOrDefault(r => r.Name.EndsWith(resName));
                    if (!res.IsNil)
                    {
                        module = new PEFile(res.Name, res.TryOpenStream());
                    }

                    if (module == null)
                    {
                        module = _resolver.Resolve(name);
                    }

                    cache[name.FullName] = module;
                    return(module);
                }
            }