AsmResolver.Net.DefaultNetAssemblyResolver.ResolveAssembly C# (CSharp) Method

ResolveAssembly() public method

public ResolveAssembly ( IAssemblyDescriptor descriptor ) : AssemblyDefinition
descriptor IAssemblyDescriptor
return AssemblyDefinition
        public AssemblyDefinition ResolveAssembly(IAssemblyDescriptor descriptor)
        {
            AssemblyDefinition definition;
            if (_cachedAssemblies.TryGetValue(descriptor, out definition))
                return definition;

            var path = GetFilePath(descriptor);
            if (!string.IsNullOrEmpty(path))
            {
                var assembly = ReadAssembly(path);
                if (assembly.NetDirectory != null && assembly.NetDirectory.MetadataHeader != null)
                {
                    var tableStream = assembly.NetDirectory.MetadataHeader.GetStream<TableStream>();
                    if (tableStream != null)
                    {

                        var assemblyTable = tableStream.GetTable<AssemblyDefinition>();
                        if (assemblyTable.Count > 0)
                        {

                            definition = assemblyTable[0];
                            _cachedAssemblies.Add(descriptor, definition);
                            return definition;
                        }
                    }
                }
            }

            definition = OnAssemblyResolutionFailed(new AssemblyResolutionEventArgs(descriptor));
            if (definition == null)
            {
                if (ThrowOnNotFound)
                    throw new AssemblyResolutionException(descriptor);
            }
            else
            {
                _cachedAssemblies.Add(descriptor, definition);
            }

            return definition;
        }