Example #1
0
        internal Type FastBindToType(string assemblyName, string typeName)
        {
            Type type = null;

            TypeNAssembly entry = (TypeNAssembly)_typeCache.GetCachedValue(typeName);

            if (entry == null || entry.AssemblyName != assemblyName)
            {
                Assembly assm = null;
                try
                {
                    assm = Assembly.Load(new AssemblyName(assemblyName));
                }
                catch { }

                if (assm == null)
                {
                    return(null);
                }

                if (_isSimpleAssembly)
                {
                    GetSimplyNamedTypeFromAssembly(assm, typeName, ref type);
                }
                else
                {
                    type = FormatterServices.GetTypeFromAssembly(assm, typeName);
                }

                if (type == null)
                {
                    return(null);
                }

                // before adding it to cache, let us do the security check
                CheckTypeForwardedTo(assm, type.Assembly, type);

                entry              = new TypeNAssembly();
                entry.Type         = type;
                entry.AssemblyName = assemblyName;
                _typeCache.SetCachedValue(entry);
            }
            return(entry.Type);
        }
Example #2
0
        internal Type?FastBindToType(string?assemblyName, string typeName)
        {
            Type?type = null;

            TypeNAssembly?entry = (TypeNAssembly?)_typeCache.GetCachedValue(typeName);

            if (entry == null || entry.AssemblyName != assemblyName)
            {
                // Check early to avoid throwing unnecessary exceptions
                if (assemblyName == null)
                {
                    return(null);
                }

                Assembly?    assm = null;
                AssemblyName?assmName;

                try
                {
                    assmName = new AssemblyName(assemblyName);
                }
                catch
                {
                    return(null);
                }

                if (_isSimpleAssembly)
                {
                    assm = ResolveSimpleAssemblyName(assmName);
                }
                else
                {
                    try
                    {
                        assm = Assembly.Load(assmName);
                    }
                    catch { }
                }

                if (assm == null)
                {
                    return(null);
                }

                if (_isSimpleAssembly)
                {
                    GetSimplyNamedTypeFromAssembly(assm, typeName, ref type);
                }
                else
                {
                    type = FormatterServices.GetTypeFromAssembly(assm, typeName);
                }

                if (type == null)
                {
                    return(null);
                }

                // before adding it to cache, let us do the security check
                CheckTypeForwardedTo(assm, type.Assembly, type);

                entry              = new TypeNAssembly();
                entry.Type         = type;
                entry.AssemblyName = assemblyName;
                _typeCache.SetCachedValue(entry);
            }
            return(entry.Type);
        }
 internal Type FastBindToType(string assemblyName, string typeName)
 {
     Type typeFromAssembly = null;
     TypeNAssembly cachedValue = (TypeNAssembly) this.typeCache.GetCachedValue(typeName);
     if ((cachedValue == null) || (cachedValue.assemblyName != assemblyName))
     {
         Assembly assm = null;
         if (this.bSimpleAssembly)
         {
             try
             {
                 sfileIOPermission.Assert();
                 try
                 {
                     assm = ResolveSimpleAssemblyName(new AssemblyName(assemblyName));
                 }
                 finally
                 {
                     CodeAccessPermission.RevertAssert();
                 }
             }
             catch (Exception)
             {
             }
             if (assm == null)
             {
                 return null;
             }
             GetSimplyNamedTypeFromAssembly(assm, typeName, ref typeFromAssembly);
         }
         else
         {
             try
             {
                 sfileIOPermission.Assert();
                 try
                 {
                     assm = Assembly.Load(assemblyName);
                 }
                 finally
                 {
                     CodeAccessPermission.RevertAssert();
                 }
             }
             catch (Exception)
             {
             }
             if (assm == null)
             {
                 return null;
             }
             typeFromAssembly = FormatterServices.GetTypeFromAssembly(assm, typeName);
         }
         if (typeFromAssembly == null)
         {
             return null;
         }
         CheckTypeForwardedTo(assm, typeFromAssembly.Assembly, typeFromAssembly);
         cachedValue = new TypeNAssembly {
             type = typeFromAssembly,
             assemblyName = assemblyName
         };
         this.typeCache.SetCachedValue(cachedValue);
     }
     return cachedValue.type;
 }
        [System.Security.SecurityCritical]  // auto-generated 
        internal Type FastBindToType(String assemblyName, String typeName)
        { 
            Type type = null;

            TypeNAssembly entry = (TypeNAssembly)typeCache.GetCachedValue(typeName);
 
            if (entry == null || entry.assemblyName != assemblyName)
            { 
                Assembly assm = null; 
                if (bSimpleAssembly)
                { 
                    try {
                          sfileIOPermission.Assert();
                          try {
#if FEATURE_FUSION 
                              assm = ObjectReader.ResolveSimpleAssemblyName(new AssemblyName(assemblyName));
#else // FEATURE_FUSION 
                              Assembly.Load(assemblyName); 
#endif // FEATURE_FUSION
                          } 
                          finally {
                              CodeAccessPermission.RevertAssert();
                          }
                    } 
                    catch(Exception e){
                        SerTrace.Log( this, "FastBindTypeType ",e.ToString()); 
                    } 

                    if (assm == null) 
                        return null;

                    ObjectReader.GetSimplyNamedTypeFromAssembly(assm, typeName, ref type);
                } 
                else {
                    try 
                    { 
                          sfileIOPermission.Assert();
                          try { 
                              assm = Assembly.Load(assemblyName);
                          }
                          finally {
                              CodeAccessPermission.RevertAssert(); 
                          }
                    } 
                    catch (Exception e) 
                    {
                        SerTrace.Log( this, "FastBindTypeType ",e.ToString()); 
                    }

                    if (assm == null)
                        return null; 

                    type = FormatterServices.GetTypeFromAssembly(assm, typeName); 
                } 

                if ((object)type == null) 
                    return null;

                entry = new TypeNAssembly();
                entry.type = type; 
                entry.assemblyName = assemblyName;
                typeCache.SetCachedValue(entry); 
            } 
           return entry.type;
        } 
Example #5
0
        internal Type FastBindToType(String assemblyName, String typeName)
        {
            Type type = null;

            TypeNAssembly entry = (TypeNAssembly)typeCache.GetCachedValue(typeName);

            if (entry == null || entry.assemblyName != assemblyName)
            {
                Assembly assm = null;
                if (bSimpleAssembly)
                {
                    assm = Assembly.LoadWithPartialName(assemblyName);
                }
                else {
                    try
                        {
                            assm = Assembly.Load(assemblyName);
                        }
                    catch (Exception)
                        {
                        }
                }
                if (assm == null)
                    return null;

                type = FormatterServices.GetTypeFromAssembly(assm, typeName);

                if (type == null)
                    return null;

                entry = new TypeNAssembly();
                entry.type = type;
                entry.assemblyName = assemblyName;
                typeCache.SetCachedValue(entry);
            }
           return entry.type;
        }
Example #6
0
        internal Type FastBindToType(string assemblyName, string typeName)
        {
            Type          typeFromAssembly = null;
            TypeNAssembly cachedValue      = (TypeNAssembly)this.typeCache.GetCachedValue(typeName);

            if ((cachedValue == null) || (cachedValue.assemblyName != assemblyName))
            {
                Assembly assm = null;
                if (this.bSimpleAssembly)
                {
                    try
                    {
                        sfileIOPermission.Assert();
                        try
                        {
                            assm = ResolveSimpleAssemblyName(new AssemblyName(assemblyName));
                        }
                        finally
                        {
                            CodeAccessPermission.RevertAssert();
                        }
                    }
                    catch (Exception)
                    {
                    }
                    if (assm == null)
                    {
                        return(null);
                    }
                    GetSimplyNamedTypeFromAssembly(assm, typeName, ref typeFromAssembly);
                }
                else
                {
                    try
                    {
                        sfileIOPermission.Assert();
                        try
                        {
                            assm = Assembly.Load(assemblyName);
                        }
                        finally
                        {
                            CodeAccessPermission.RevertAssert();
                        }
                    }
                    catch (Exception)
                    {
                    }
                    if (assm == null)
                    {
                        return(null);
                    }
                    typeFromAssembly = FormatterServices.GetTypeFromAssembly(assm, typeName);
                }
                if (typeFromAssembly == null)
                {
                    return(null);
                }
                CheckTypeForwardedTo(assm, typeFromAssembly.Assembly, typeFromAssembly);
                cachedValue = new TypeNAssembly {
                    type         = typeFromAssembly,
                    assemblyName = assemblyName
                };
                this.typeCache.SetCachedValue(cachedValue);
            }
            return(cachedValue.type);
        }
        private Type FastBindToType(string assemblyName, string typeName)
        {
            Type          typeFromAssembly = null;
            TypeNAssembly cachedValue      = (TypeNAssembly)this.typeCache.GetCachedValue(typeName);

            if ((cachedValue == null) || (cachedValue.AssemblyName != assemblyName))
            {
                if (assemblyName == null)
                {
                    return(null);
                }
                Assembly     assm = null;
                AssemblyName name;
                try
                {
                    name = new AssemblyName(assemblyName);
                }
                catch
                {
                    return(null);
                }
                if (this.isSimpleAssembly)
                {
                    assm = ResolveSimpleAssemblyName(name);
                }
                else
                {
                    try
                    {
                        assm = Assembly.Load(name);
                    }
                    catch
                    {
                    }
                }
                if (assm == null)
                {
                    return(null);
                }
                if (this.isSimpleAssembly)
                {
                    GetSimplyNamedTypeFromAssembly(assm, typeName, ref typeFromAssembly);
                }
                else
                {
                    typeFromAssembly = FormatterServices.GetTypeFromAssembly(assm, typeName);
                }

                if (typeFromAssembly == null)
                {
                    return(null);
                }

                cachedValue = new TypeNAssembly
                {
                    Type         = typeFromAssembly,
                    AssemblyName = assemblyName
                };
                this.typeCache.SetCachedValue(typeName, cachedValue);
            }
            return(cachedValue.Type);
        }
 internal Type FastBindToType(string assemblyName, string typeName)
 {
     Type typeFromAssembly = null;
     TypeNAssembly cachedValue = this.typeCache.GetCachedValue(typeName) as TypeNAssembly;
     if ((cachedValue == null) || (cachedValue.assemblyName != assemblyName))
     {
         Assembly assem = this.LoadAssemblyFromString(assemblyName);
         if (assem == null)
         {
             return null;
         }
         typeFromAssembly = FormatterServices.GetTypeFromAssembly(assem, typeName);
         if (typeFromAssembly == null)
         {
             return null;
         }
         cachedValue = new TypeNAssembly {
             type = typeFromAssembly,
             assemblyName = assemblyName
         };
         this.typeCache.SetCachedValue(cachedValue);
     }
     return cachedValue.type;
 }
Example #9
0
        internal Type FastBindToType(string assemblyName, string typeName)
        {
            Type type = null;

            TypeNAssembly entry = (TypeNAssembly)_typeCache.GetCachedValue(typeName);

            if (entry == null || entry.AssemblyName != assemblyName)
            {
                Assembly assm = null;
                try
                {
                    assm = Assembly.Load(new AssemblyName(assemblyName));
                }
                catch { }

                if (assm == null)
                {
                    return null;
                }

                if (_isSimpleAssembly)
                {
                    GetSimplyNamedTypeFromAssembly(assm, typeName, ref type);
                }
                else
                {
                    type = FormatterServices.GetTypeFromAssembly(assm, typeName);
                }

                if (type == null)
                {
                    return null;
                }

                // before adding it to cache, let us do the security check 
                CheckTypeForwardedTo(assm, type.GetTypeInfo().Assembly, type);

                entry = new TypeNAssembly();
                entry.Type = type;
                entry.AssemblyName = assemblyName;
                _typeCache.SetCachedValue(entry);
            }
            return entry.Type;
        }
Example #10
0
        internal Type FastBindToType(String assemblyName, String typeName)
        {
            Type type = null;

            TypeNAssembly entry = (TypeNAssembly)typeCache.GetCachedValue(typeName);

            if (entry == null || entry.assemblyName != assemblyName)
            {
                Assembly assm = LoadAssemblyFromString(assemblyName);
                if (assm == null)
                    return null;

                type = FormatterServices.GetTypeFromAssembly(assm, typeName);

                if (type == null)
                    return null;

                entry = new TypeNAssembly();
                entry.type = type;
                entry.assemblyName = assemblyName;
                typeCache.SetCachedValue(entry);
            }
           return entry.type;
        }