ProvidersHelper.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Configuration / ProvidersHelper.cs / 1305376 / ProvidersHelper.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.Configuration 
{ 
    using System.Configuration;
    using System.Configuration.Provider; 
    using System.Web.Compilation;
    using System.Collections.Specialized;
    using System;
    using System.Security; 
    using System.Security.Permissions;
 
    public static class ProvidersHelper { 
        ///////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////// 
        [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Low)]
        public static ProviderBase InstantiateProvider(ProviderSettings providerSettings, Type providerType)
        {
            ProviderBase provider = null; 
            try {
                string pnType = (providerSettings.Type == null) ? null : providerSettings.Type.Trim(); 
                if (string.IsNullOrEmpty(pnType)) 
                    throw new ArgumentException(SR.GetString(SR.Provider_no_type_name));
                Type t = ConfigUtil.GetType(pnType, "type", providerSettings, true, true); 

                if (!providerType.IsAssignableFrom(t))
                    throw new ArgumentException(SR.GetString(SR.Provider_must_implement_type, providerType.ToString()));
                provider = (ProviderBase)HttpRuntime.CreatePublicInstance(t); 

                // Because providers modify the parameters collection (i.e. delete stuff), pass in a clone of the collection 
                NameValueCollection pars = providerSettings.Parameters; 
                NameValueCollection cloneParams = new NameValueCollection(pars.Count, StringComparer.Ordinal);
                foreach (string key in pars) 
                    cloneParams[key] = pars[key];
                provider.Initialize(providerSettings.Name, cloneParams);
            } catch (Exception e) {
                if (e is ConfigurationException) 
                    throw;
                throw new ConfigurationErrorsException(e.Message, e, providerSettings.ElementInformation.Properties["type"].Source, providerSettings.ElementInformation.Properties["type"].LineNumber); 
            } 

            return provider; 
        }

        [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Low)]
        public static void InstantiateProviders(ProviderSettingsCollection configProviders, ProviderCollection providers, Type providerType) 
        {
            foreach (ProviderSettings ps in configProviders) { 
                providers.Add(InstantiateProvider(ps, providerType)); 
            }
        } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.Configuration 
{ 
    using System.Configuration;
    using System.Configuration.Provider; 
    using System.Web.Compilation;
    using System.Collections.Specialized;
    using System;
    using System.Security; 
    using System.Security.Permissions;
 
    public static class ProvidersHelper { 
        ///////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////// 
        [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Low)]
        public static ProviderBase InstantiateProvider(ProviderSettings providerSettings, Type providerType)
        {
            ProviderBase provider = null; 
            try {
                string pnType = (providerSettings.Type == null) ? null : providerSettings.Type.Trim(); 
                if (string.IsNullOrEmpty(pnType)) 
                    throw new ArgumentException(SR.GetString(SR.Provider_no_type_name));
                Type t = ConfigUtil.GetType(pnType, "type", providerSettings, true, true); 

                if (!providerType.IsAssignableFrom(t))
                    throw new ArgumentException(SR.GetString(SR.Provider_must_implement_type, providerType.ToString()));
                provider = (ProviderBase)HttpRuntime.CreatePublicInstance(t); 

                // Because providers modify the parameters collection (i.e. delete stuff), pass in a clone of the collection 
                NameValueCollection pars = providerSettings.Parameters; 
                NameValueCollection cloneParams = new NameValueCollection(pars.Count, StringComparer.Ordinal);
                foreach (string key in pars) 
                    cloneParams[key] = pars[key];
                provider.Initialize(providerSettings.Name, cloneParams);
            } catch (Exception e) {
                if (e is ConfigurationException) 
                    throw;
                throw new ConfigurationErrorsException(e.Message, e, providerSettings.ElementInformation.Properties["type"].Source, providerSettings.ElementInformation.Properties["type"].LineNumber); 
            } 

            return provider; 
        }

        [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Low)]
        public static void InstantiateProviders(ProviderSettingsCollection configProviders, ProviderCollection providers, Type providerType) 
        {
            foreach (ProviderSettings ps in configProviders) { 
                providers.Add(InstantiateProvider(ps, providerType)); 
            }
        } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK