+\r
+ string typename = null;\r
+ Type generatorType = null;\r
+\r
+ if (language != null) {\r
+ switch (language) {\r
+ case "CS":\r
+ provider = new CSharpCodeProvider ();\r
+ break;\r
+ case "VB":\r
+ provider = new VBCodeProvider ();\r
+ break;\r
+ default:\r
+ typename = StripQuot (language);\r
+\r
+ generatorType = Type.GetType (typename);\r
+ if (generatorType == null)\r
+ Error (generatorTypeNotFound, typename);\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (providerOption != null) {\r
+ string param = providerOption;\r
+ int comma = param.IndexOf (',');\r
+ if (comma < 0) {\r
+ typename = StripQuot (param);\r
+ generatorType = Type.GetType (param);\r
+ } else {\r
+ typename = param.Substring (0, comma);\r
+ string asmName = param.Substring (comma + 1);\r
+ Assembly asm = Assembly.LoadFile (asmName);\r
+ if (asm == null)\r
+ Error (generatorAssemblyNotFound, asmName);\r
+ generatorType = asm.GetType (typename);\r
+ }\r
+ if (generatorType == null)\r
+ Error (generatorTypeNotFound, typename);\r
+ }\r
+ if (generatorType != null) {\r
+ if (!generatorType.IsSubclassOf (typeof (CodeDomProvider)))\r
+ Error (generatorTypeIsNotCodeGenerator, typename);\r
+ try {\r
+ provider = (CodeDomProvider) Activator.CreateInstance (generatorType, null);\r
+ } catch (Exception ex) {\r
+ Error (generatorThrewException, generatorType.AssemblyQualifiedName.ToString () + " --> " + ex.Message);\r
+ }\r
+ Console.WriteLine ("Loaded custom generator type " + generatorType + " .");\r
+ }\r
+ if (provider == null)\r
+ provider = new CSharpCodeProvider ();\r
+\r