/// <summary> /// /// </summary> /// <param name="loglog"></param> public LogReceivedEventArgs(LogLog loglog) { this.loglog = loglog; }
/// <summary> /// Loads the type specified in the type string. /// </summary> /// <param name="relativeAssembly">An assembly to load the type from.</param> /// <param name="typeName">The name of the type to load.</param> /// <param name="throwOnError">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param> /// <param name="ignoreCase"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param> /// <returns>The type loaded or <c>null</c> if it could not be loaded.</returns> /// <remarks> /// <para> /// If the type name is fully qualified, i.e. if contains an assembly name in /// the type name, the type will be loaded from the system using /// <see cref="Type.GetType(string,bool)"/>. /// </para> /// <para> /// If the type name is not fully qualified it will be loaded from the specified /// assembly. If the type is not found in the assembly then all the loaded assemblies /// will be searched for the type. /// </para> /// </remarks> public static Type GetTypeFromString(Assembly relativeAssembly, string typeName, bool throwOnError, bool ignoreCase) { // Check if the type name specifies the assembly name if (typeName.IndexOf(',') == -1) { //LogLog.Debug(declaringType, "SystemInfo: Loading type ["+typeName+"] from assembly ["+relativeAssembly.FullName+"]"); #if NETCF return(relativeAssembly.GetType(typeName, throwOnError)); #else // Attempt to lookup the type from the relativeAssembly Type type = relativeAssembly.GetType(typeName, false, ignoreCase); if (type != null) { // Found type in relative assembly //LogLog.Debug(declaringType, "SystemInfo: Loaded type ["+typeName+"] from assembly ["+relativeAssembly.FullName+"]"); return(type); } Assembly[] loadedAssemblies = null; try { loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); } catch (System.Security.SecurityException) { // Insufficient permissions to get the list of loaded assemblies } if (loadedAssemblies != null) { // Search the loaded assemblies for the type foreach (Assembly assembly in loadedAssemblies) { type = assembly.GetType(typeName, false, ignoreCase); if (type != null) { // Found type in loaded assembly LogLog.Debug(declaringType, "Loaded type [" + typeName + "] from assembly [" + assembly.FullName + "] by searching loaded assemblies."); return(type); } } } // Didn't find the type if (throwOnError) { throw new TypeLoadException("Could not load type [" + typeName + "]. Tried assembly [" + relativeAssembly.FullName + "] and all loaded assemblies"); } return(null); #endif } else { // Includes explicit assembly name //LogLog.Debug(declaringType, "SystemInfo: Loading type ["+typeName+"] from global Type"); #if NETCF // In NETCF 2 and 3 arg versions seem to behave differently // https://issues.apache.org/jira/browse/LOG4NET-113 return(Type.GetType(typeName, throwOnError)); #else return(Type.GetType(typeName, throwOnError, ignoreCase)); #endif } }