private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName == null) { return(Type.GetType(typeName)); } Assembly assembly = Assembly.LoadWithPartialName(assemblyName); if (assembly == null) { foreach (Assembly assembly2 in AppDomain.CurrentDomain.GetAssemblies()) { if (assembly2.FullName == assemblyName) { assembly = assembly2; break; } } } if (assembly == null) { throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } return(type); }
private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly; assembly = Assembly.Load(new AssemblyName(assemblyName)); if (assembly == null) { throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } return(type); } else { return(Type.GetType(typeName)); } }
private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName == null) { return(Type.GetType(typeName)); } Assembly assembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a => a.GetName().Name == assemblyName); //Assembly assembly = Assembly.Load(assemblyName); if (assembly == null) { throw new JsonSerializationException(string.Format("Could not load assembly '{0}'.", assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { throw new JsonSerializationException(string.Format("Could not find type '{0}' in assembly '{1}'.", typeName, assembly.FullName)); } return(type); }
private Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { var assemblyName = typeNameKey.AssemblyName; var typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly; assembly = Assembly.Load(new AssemblyName(assemblyName)); if (assembly == null) { // will find assemblies loaded with Assembly.LoadFile outside of the main directory var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (var a in loadedAssemblies) { if (a.FullName == assemblyName || a.GetName().Name == assemblyName) { assembly = a; break; } } } if (assembly == null) { throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName)); } var type = assembly.GetType(typeName); if (type == null) { // if generic type, try manually parsing the type arguments for the case of dynamically loaded assemblies // example generic typeName format: System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] if (typeName.IndexOf('`') >= 0) { try { type = GetGenericTypeFromTypeName(typeName, assembly); } catch (Exception ex) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName), ex); } } if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } } return(type); } return(Type.GetType(typeName)); }
private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly; #if !(DOTNET || PORTABLE40 || PORTABLE) // look, I don't like using obsolete methods as much as you do but this is the only way // Assembly.Load won't check the GAC for a partial name #pragma warning disable 618,612 assembly = Assembly.LoadWithPartialName(assemblyName); #pragma warning restore 618,612 #elif DOTNET || PORTABLE assembly = Assembly.Load(new AssemblyName(assemblyName)); #else assembly = Assembly.Load(assemblyName); #endif #if !(PORTABLE40 || PORTABLE || DOTNET) if (assembly == null) { // will find assemblies loaded with Assembly.LoadFile outside of the main directory Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly a in loadedAssemblies) { if (a.FullName == assemblyName) { assembly = a; break; } } } #endif if (assembly == null) { throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } return(type); } else { return(Type.GetType(typeName)); } }
private Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName == null) { return(Type.GetType(typeName)); } Assembly assembly1 = Assembly.LoadWithPartialName(assemblyName); if (assembly1 == null) { foreach (Assembly assembly2 in AppDomain.CurrentDomain.GetAssemblies()) { if (assembly2.FullName == assemblyName || assembly2.GetName().Name == assemblyName) { assembly1 = assembly2; break; } } } if (assembly1 == null) { throw new JsonSerializationException( "Could not load assembly '{0}'.".FormatWith((IFormatProvider)CultureInfo.InvariantCulture, (object)assemblyName)); } Type type = assembly1.GetType(typeName); if (type == null) { if (typeName.IndexOf('`') >= 0) { try { type = this.GetGenericTypeFromTypeName(typeName, assembly1); } catch (Exception ex) { throw new JsonSerializationException( "Could not find type '{0}' in assembly '{1}'.".FormatWith((IFormatProvider)CultureInfo.InvariantCulture, (object)typeName, (object)assembly1.FullName), ex); } } if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith( (IFormatProvider)CultureInfo.InvariantCulture, (object)typeName, (object)assembly1.FullName)); } } return(type); }
private Type GetGenericTypeFromTypeName(string typeName, Assembly assembly) { Type type1 = (Type)null; int length = typeName.IndexOf('['); if (length >= 0) { string name = typeName.Substring(0, length); Type type2 = assembly.GetType(name); if (type2 != null) { List <Type> typeList = new List <Type>(); int num1 = 0; int startIndex = 0; int num2 = typeName.Length - 1; for (int index = length + 1; index < num2; ++index) { switch (typeName[index]) { case '[': if (num1 == 0) { startIndex = index + 1; } ++num1; break; case ']': --num1; if (num1 == 0) { TypeNameKey typeNameKey = ReflectionUtils.SplitFullyQualifiedTypeName(typeName.Substring(startIndex, index - startIndex)); typeList.Add(this.GetTypeByName(typeNameKey)); break; } break; } } type1 = type2.MakeGenericType(typeList.ToArray()); } } return(type1); }
private Type GetGenericTypeFromTypeName(string typeName, Assembly assembly) { Type type = null; int openBracketIndex = typeName.IndexOf('['); if (openBracketIndex >= 0) { string genericTypeDefName = typeName.Substring(0, openBracketIndex); Type genericTypeDef = assembly.GetType(genericTypeDefName); if (genericTypeDef != null) { List <Type> genericTypeArguments = new List <Type>(); int scope = 0; int typeArgStartIndex = 0; int endIndex = typeName.Length - 1; for (int i = openBracketIndex + 1; i < endIndex; ++i) { char current = typeName[i]; switch (current) { case '[': if (scope == 0) { typeArgStartIndex = i + 1; } ++scope; break; case ']': --scope; if (scope == 0) { string typeArgAssemblyQualifiedName = typeName.Substring(typeArgStartIndex, i - typeArgStartIndex); TypeNameKey typeNameKey = ReflectionUtils.SplitFullyQualifiedTypeName(typeArgAssemblyQualifiedName); genericTypeArguments.Add(GetTypeByName(typeNameKey)); } break; } } type = genericTypeDef.MakeGenericType(genericTypeArguments.ToArray()); } } return(type); }
private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly = Assembly.Load(assemblyName); Type type = assembly?.GetType(typeName); return(type); } else { return(Type.GetType(typeName)); } }
private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly; assembly = Assembly.Load(assemblyName); if (assembly == null) { // will find assemblies loaded with Assembly.LoadFile outside of the main directory Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly a in loadedAssemblies) { if (a.FullName == assemblyName) { assembly = a; break; } } } if (assembly == null) { throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } return(type); } else { return(Type.GetType(typeName)); } }
private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly; #if !SILVERLIGHT && !PocketPC && !NETFX_CORE // look, I don't like using obsolete methods as much as you do but this is the only way // Assembly.Load won't check the GAC for a partial name #pragma warning disable 618,612 assembly = Assembly.LoadWithPartialName(assemblyName); #pragma warning restore 618,612 #elif NETFX_CORE assembly = Assembly.Load(new AssemblyName(assemblyName)); #else assembly = Assembly.Load(assemblyName); #endif if (assembly == null) { throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } return(type); } else { return(Type.GetType(typeName)); } }
private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly; #if !(UNITY_WP8 || UNITY_WP_8_1) && !UNITY_WEBPLAYER && (!UNITY_WINRT || UNITY_EDITOR) && !UNITY_ANDROID // look, I don't like using obsolete methods as much as you do but this is the only way // Assembly.Load won't check the GAC for a partial name #pragma warning disable 618,612 assembly = Assembly.LoadWithPartialName(assemblyName); #pragma warning restore 618,612 #else assembly = Assembly.Load(assemblyName); #endif if (assembly == null) { throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } return(type); } else { return(Type.GetType(typeName)); } }
private Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly; //#pragma warning disable 618,612 //Console.WriteLine(_appDomain.FriendlyName); assembly = _appDomain.Load(new AssemblyName() { Name = assemblyName }); //#pragma warning restore 618,612 if (assembly == null) { throw new SerializationException("Could not load assembly '{0}'.".With(CultureInfo.InvariantCulture, assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { throw new SerializationException("Could not find type '{0}' in assembly '{1}'.".With(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } return(type); } else { return(Type.GetType(typeName)); } }
private Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly; #if !(DOTNET || PORTABLE40 || PORTABLE) // look, I don't like using obsolete methods as much as you do but this is the only way // Assembly.Load won't check the GAC for a partial name #pragma warning disable 618, 612 assembly = Assembly.LoadWithPartialName(assemblyName); #pragma warning restore 618, 612 #elif DOTNET || PORTABLE assembly = Assembly.Load(new AssemblyName(assemblyName)); #else assembly = Assembly.Load(assemblyName); #endif #if HAVE_APP_DOMAIN if (assembly == null) { // will find assemblies loaded with Assembly.LoadFile outside of the main directory Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); for (var i = 0; i < loadedAssemblies.Length; i++) { Assembly a = loadedAssemblies[i]; // check for both full name or partial name match if (a.FullName == assemblyName || a.GetName().Name == assemblyName) { assembly = a; break; } } } #endif if (assembly == null) { throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { // if generic type, try manually parsing the type arguments for the case of dynamically loaded assemblies // example generic typeName format: System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] if (typeName.IndexOf('`') >= 0) { try { type = GetGenericTypeFromTypeName(typeName, assembly); } catch (Exception ex) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName), ex); } } if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } } return(type); } else { return(Type.GetType(typeName)); } }
private Type GetTypeByName(TypeNameKey typeNameKey) { return(_typeCache.Get(typeNameKey)); }
private Type GetTypeByName(TypeNameKey typeNameKey) { return _typeCache.Get(typeNameKey); }
private Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { string assemblyName = typeNameKey.AssemblyName; string typeName = typeNameKey.TypeName; if (assemblyName != null) { Assembly assembly; #if !(DOTNET || PORTABLE40 || PORTABLE) // look, I don't like using obsolete methods as much as you do but this is the only way // Assembly.Load won't check the GAC for a partial name #pragma warning disable 618,612 assembly = Assembly.LoadWithPartialName(assemblyName); #pragma warning restore 618,612 #elif DOTNET || PORTABLE assembly = Assembly.Load(new AssemblyName(assemblyName)); #else assembly = Assembly.Load(assemblyName); #endif #if !(PORTABLE40 || PORTABLE || DOTNET) if (assembly == null) { // will find assemblies loaded with Assembly.LoadFile outside of the main directory Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly a in loadedAssemblies) { // check for both full name or partial name match if (a.FullName == assemblyName || a.GetName().Name == assemblyName) { assembly = a; break; } } } #endif if (assembly == null) { throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName)); } Type type = assembly.GetType(typeName); if (type == null) { // if generic type, try manually parsing the type arguments for the case of dynamically loaded assemblies // example generic typeName format: System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] if (typeName.IndexOf('`') >= 0) { try { type = GetGenericTypeFromTypeName(typeName, assembly); } catch (Exception ex) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName), ex); } } if (type == null) { throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName)); } } return type; } else { return Type.GetType(typeName); } }
private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey) { var assemblyName = typeNameKey.AssemblyName; var typeName = typeNameKey.TypeName; if (assemblyName != null) { #if NETFX // look, I don't like using obsolete methods as much as you do but this is the only way // Assembly.Load won't check the GAC for a partial name #pragma warning disable 618,612 var assembly = Assembly.LoadWithPartialName(assemblyName); #pragma warning restore 618,612 #else var assembly = Assembly.Load(new AssemblyName(assemblyName)); #endif #if NETFX if (assembly == null) { // will find assemblies loaded with Assembly.LoadFile outside of the main directory var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (var a in loadedAssemblies) { // check for both full name or partial name match if (a.FullName == assemblyName || a.GetName().Name == assemblyName) { assembly = a; break; } } } #endif if (assembly == null) { throw new EasyNetQException($"Could not load assembly '{assemblyName}'"); } var type = assembly.GetType(typeName); if (type == null) { // if generic type, try manually parsing the type arguments for the case of dynamically loaded assemblies // example generic typeName format: System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] if (typeName.IndexOf('`') >= 0) { try { type = GetGenericTypeFromTypeName(typeName, assembly); } catch (Exception ex) { throw new EasyNetQException($"Could not find type '{typeName}' in assembly '{assembly.FullName}'", ex); } } if (type == null) { throw new EasyNetQException($"Could not find type '{typeName}' in assembly '{assembly.FullName}'"); } } return(type); } return(Type.GetType(typeName)); }
public bool Equals(TypeNameKey other) { return(AssemblyName == other.AssemblyName && TypeName == other.TypeName); }