Beispiel #1
0
 /// <summary>
 /// Libera a instancia.
 /// </summary>
 /// <param name="disposing"></param>
 protected virtual void Dispose(bool disposing)
 {
     _loadAssembliesResult = null;
     _assemblyParts        = null;
 }
Beispiel #2
0
 /// <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;
     }
 }