System.AppDomain.AppDomain.DoAssemblyResolve C# (CSharp) Méthode

DoAssemblyResolve() private méthode

private DoAssemblyResolve ( string name, bool refonly ) : Assembly
name string
refonly bool
Résultat System.Reflection.Assembly
		private Assembly DoAssemblyResolve (string name, bool refonly)
		{
			ResolveEventHandler del;
#if !NET_2_1
			if (refonly)
				del = ReflectionOnlyAssemblyResolve;
			else
				del = AssemblyResolve;
#else
			del = AssemblyResolve;
#endif
			if (del == null)
				return null;
			
			/* Prevent infinite recursion */
			Hashtable ht;
			if (refonly) {
				ht = assembly_resolve_in_progress_refonly;
				if (ht == null) {
					ht = new Hashtable ();
					assembly_resolve_in_progress_refonly = ht;
				}
			} else {
				ht = assembly_resolve_in_progress;
				if (ht == null) {
					ht = new Hashtable ();
					assembly_resolve_in_progress = ht;
				}
			}

			string s = (string) ht [name];
			if (s != null)
				return null;
			ht [name] = name;
			try {
				Delegate[] invocation_list = del.GetInvocationList ();

				foreach (Delegate eh in invocation_list) {
					ResolveEventHandler handler = (ResolveEventHandler) eh;
					Assembly assembly = handler (this, new ResolveEventArgs (name));
					if (assembly != null)
						return assembly;
				}
				return null;
			}
			finally {
				ht.Remove (name);
			}
		}