/// <summary> /// Libera a instancia. /// </summary> /// <param name="disposing"></param> protected virtual void Dispose(bool disposing) { _loadAssembliesResult = null; _assemblyParts = null; }
/// <summary> /// Resolve o assembly. /// </summary> /// <param name="args"></param> /// <param name="assembly"></param> /// <param name="error"></param> /// <returns></returns> public bool Resolve(ResolveEventArgs args, out System.Reflection.Assembly assembly, out Exception error) { if (!IsValid) { assembly = null; error = null; return(false); } _isValid = false; try { lock (_objLock) { if (_loadAssembliesResult == null) { try { _loadAssembliesResult = LoadAssemblies(); } catch (Exception ex) { error = ex; assembly = null; return(false); } if (Loaded != null) { try { Loaded(this, new AssemblyResolverLoadEventArgs { Result = _loadAssembliesResult }); } catch (Exception ex) { error = ex; assembly = null; return(false); } } } var assemblyName = new System.Reflection.AssemblyName(args.Name).Name.GetAssemblyNameWithoutExtension(); var entry = _loadAssembliesResult.Where(f => StringComparer.InvariantCultureIgnoreCase.Equals(f.AssemblyName, assemblyName)).FirstOrDefault(); if (entry == null || entry.Error != null) { assembly = null; error = entry != null ? entry.Error : null; return(false); } assembly = entry.Assembly; error = null; if (assembly != null) { return(true); } return(false); } } finally { _isValid = true; } }