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));
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #9
0
        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);
            }
        }
Example #18
0
        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);
 }