-//\r
-// System.Web.Configuration.ProvidersHelper\r
-//\r
-// Authors:\r
-// Chris Toshok (toshok@ximian.com)\r
-//\r
-// (C) 2005 Novell, Inc (http://www.novell.com)\r
-//\r
-\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-\r
-#if NET_2_0\r
-\r
-using System;\r
-using System.Configuration;\r
-using System.Configuration.Provider;\r
-using System.Data.Common;\r
-using System.Data.SqlClient;\r
-using System.IO;\r
-using System.Reflection;\r
-\r
-namespace System.Web.Configuration {\r
-\r
- public static class ProvidersHelper\r
- {\r
- private static string privateBinPath = null;\r
- \r
- public static ProviderBase InstantiateProvider (ProviderSettings providerSettings, Type providerType)\r
- {\r
- Type settingsType = Type.GetType (providerSettings.Type);\r
- if (settingsType == null && Directory.Exists (PrivateBinPath)) {\r
- string [] binDlls = Directory.GetFiles (PrivateBinPath, "*.dll");\r
- foreach (string s in binDlls) {\r
- Assembly binA = Assembly.LoadFrom (s);\r
- settingsType = binA.GetType (providerSettings.Type);\r
- if (settingsType != null)\r
- break;\r
- }\r
- }\r
-\r
- if (settingsType == null)\r
- throw new ConfigurationErrorsException (String.Format ("Could not find type: {0}", providerSettings.Type));\r
- if (!providerType.IsAssignableFrom (settingsType))\r
- throw new ConfigurationErrorsException (String.Format ("Provider '{0}' must subclass from '{1}'", providerSettings.Name, providerType));\r
-\r
- ProviderBase provider = Activator.CreateInstance (settingsType) as ProviderBase;\r
-\r
- provider.Initialize (providerSettings.Name, providerSettings.Parameters);\r
-\r
- return provider;\r
- }\r
-\r
- private static string PrivateBinPath {\r
- get {\r
- if (privateBinPath != null)\r
- return privateBinPath;\r
-\r
- AppDomainSetup setup = AppDomain.CurrentDomain.SetupInformation;\r
- privateBinPath = Path.Combine (setup.ApplicationBase, setup.PrivateBinPath);\r
-\r
- return privateBinPath;\r
- }\r
- }\r
-\r
- public static void InstantiateProviders (ProviderSettingsCollection configProviders, ProviderCollection providers, Type providerType)\r
- {\r
- if (!typeof (ProviderBase).IsAssignableFrom (providerType))\r
- throw new ConfigurationErrorsException (String.Format ("type '{0}' must subclass from ProviderBase", providerType));\r
-\r
- foreach (ProviderSettings settings in configProviders)\r
- providers.Add (InstantiateProvider (settings, providerType));\r
- }\r
-\r
- internal static DbProviderFactory GetDbProviderFactory (string providerName)\r
- {\r
- DbProviderFactory f = null;\r
-\r
- if (providerName != null && providerName != "") {\r
- try {\r
- f = DbProviderFactories.GetFactory(providerName);\r
- }\r
- catch (Exception e) { Console.WriteLine (e); /* nada */ }\r
- if (f != null)\r
- return f;\r
- }\r
-\r
- return SqlClientFactory.Instance;\r
- }\r
- }\r
-\r
-}\r
-\r
-#endif\r
-\r
+//
+// System.Web.Configuration.ProvidersHelper
+//
+// Authors:
+// Chris Toshok (toshok@ximian.com)
+//
+// (C) 2005 Novell, Inc (http://www.novell.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+#if NET_2_0
+
+using System;
+using System.Collections;
+using System.Configuration;
+using System.Configuration.Provider;
+using System.Data.Common;
+using System.Data.SqlClient;
+using System.IO;
+using System.Reflection;
+using System.Web.Compilation;
+
+namespace System.Web.Configuration {
+
+ public static class ProvidersHelper
+ {
+ private static string privateBinPath = null;
+
+ public static ProviderBase InstantiateProvider (ProviderSettings providerSettings, Type providerType)
+ {
+ Type settingsType = Type.GetType (providerSettings.Type);
+ if (settingsType == null && Directory.Exists (PrivateBinPath)) {
+ string [] binDlls = Directory.GetFiles (PrivateBinPath, "*.dll");
+ foreach (string s in binDlls) {
+ Assembly binA = Assembly.LoadFrom (s);
+ settingsType = binA.GetType (providerSettings.Type);
+ if (settingsType != null)
+ break;
+ }
+ }
+
+ // check App_Code dlls
+ if (settingsType == null) {
+ IList appCode = BuildManager.CodeAssemblies;
+
+ if (appCode != null && appCode.Count > 0) {
+ Assembly asm;
+ foreach (object o in appCode) {
+ asm = o as Assembly;
+ if (asm == null)
+ continue;
+ settingsType = asm.GetType (providerSettings.Type);
+ if (settingsType != null)
+ break;
+ }
+ }
+ }
+
+ if (settingsType == null)
+ throw new ConfigurationErrorsException (String.Format ("Could not find type: {0}",
+ providerSettings.Type));
+ if (!providerType.IsAssignableFrom (settingsType))
+ throw new ConfigurationErrorsException (String.Format ("Provider '{0}' must subclass from '{1}'",
+ providerSettings.Name, providerType));
+
+ ProviderBase provider = Activator.CreateInstance (settingsType) as ProviderBase;
+
+ provider.Initialize (providerSettings.Name, providerSettings.Parameters);
+
+ return provider;
+ }
+
+ private static string PrivateBinPath {
+ get {
+ if (privateBinPath != null)
+ return privateBinPath;
+
+ AppDomainSetup setup = AppDomain.CurrentDomain.SetupInformation;
+ privateBinPath = Path.Combine (setup.ApplicationBase, setup.PrivateBinPath);
+
+ return privateBinPath;
+ }
+ }
+
+ public static void InstantiateProviders (ProviderSettingsCollection configProviders, ProviderCollection providers, Type providerType)
+ {
+ if (!typeof (ProviderBase).IsAssignableFrom (providerType))
+ throw new ConfigurationErrorsException (String.Format ("type '{0}' must subclass from ProviderBase", providerType));
+
+ foreach (ProviderSettings settings in configProviders)
+ providers.Add (InstantiateProvider (settings, providerType));
+ }
+
+ internal static DbProviderFactory GetDbProviderFactory (string providerName)
+ {
+ DbProviderFactory f = null;
+
+ if (providerName != null && providerName != "") {
+ try {
+ f = DbProviderFactories.GetFactory(providerName);
+ }
+ catch (Exception e) { Console.WriteLine (e); /* nada */ }
+ if (f != null)
+ return f;
+ }
+
+ return SqlClientFactory.Instance;
+ }
+ }
+
+}
+
+#endif
+