示例#1
0
        public bool GetStronglyTypedClassCode(CodeLanguage lang, string filePath, string classNamespace)
        {
            base.Get();
            ManagementClassGenerator managementClassGenerator = new ManagementClassGenerator(this);

            return(managementClassGenerator.GenerateCode(lang, filePath, classNamespace));
        }
示例#2
0
        public CodeTypeDeclaration GetStronglyTypedClassCode(bool includeSystemClassInClassDef, bool systemPropertyClass)
        {
            base.Get();
            ManagementClassGenerator managementClassGenerator = new ManagementClassGenerator(this);

            return(managementClassGenerator.GenerateCode(includeSystemClassInClassDef, systemPropertyClass));
        }
示例#3
0
        public static int Main(String[] args)
        {
            Console.WriteLine("GenWMIClass : Generate managed code wrapper for a WMI Class.");
            if (args.Length < 2)
            {
                Console.WriteLine("Invalid Arguments !!!");
                return(GenWMIClass.ShowUsage());
            }

            String machineName = String.Empty;
            String nameSpace   = "root\\CimV2";
            String className   = String.Empty;
            String language    = "CS";
            String filePath    = String.Empty;

            for (int i = 0; i < args.Length; i++)
            {
                if (args[i].ToUpper() == "-L")
                {
                    if ((args[i + 1].ToUpper() == "JS") || (args[i + 1].ToUpper() == "VB"))
                    {
                        language = args[i + 1];
                    }
                }
                else if (args[i].ToUpper() == "-C")
                {
                    className = args[i + 1];
                }
                else if (args[i].ToUpper() == "-N")
                {
                    nameSpace = args[i + 1];
                }
                else if (args[i].ToUpper() == "-M")
                {
                    machineName = args[i + 1];
                }
                else if (args[i].ToUpper() == "-P")
                {
                    filePath = args[i + 1];
                }
            }

            if (className == string.Empty)
            {
                Console.WriteLine("Error!!!!. You should specify the class name.");
                return(GenWMIClass.ShowUsage());
            }

            Console.WriteLine("Generating Code for WMI Class {0}...", className);
            try
            {
                ManagementClassGenerator mcg = new ManagementClassGenerator();
                if (mcg.GenerateCode(machineName, nameSpace, className, language, filePath) == true)
                {
                    Console.WriteLine("Code Generated Successfully!!!!");
                }
                else
                {
                    Console.WriteLine("Code Generation Failed.");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception Occured!!!! Reason : {0}\n\nStack Trace : \n{1}.", e.Message, e.StackTrace);
            }
#if PAUSE
            Console.WriteLine("Press a Key...!");
            Console.Read();
#endif
            return(0);
        }
示例#4
0
        public override byte[] GenerateCode(string inputFileName, string inputFileContent)
        {
            // Validate parameters.
            if (inputFileContent == null || inputFileContent.Length == 0)
            {
                string errorMessage = "WMICodeGenerator - Input file content is null or empty.";
                GeneratorErrorCallback(false, 1, errorMessage, 0, 0);
                // Should I throw an exception?
                // throw new ArgumentException(inputFileContent);
                return(null);
            }

            //Here parse the input file and get all the necessary info

            // Set generator progress to 0 out of 100.
            IVsGeneratorProgress progress = CodeGeneratorProgress;

            if (progress != null)
            {
                progress.Progress(0, 100);
            }

            StreamWriter writer = new StreamWriter(new MemoryStream(), Encoding.UTF8);
            //writer.Write((char) 0xFEFF);

            /*
             * tw = new StreamWriter(new FileStream (genFileName,
             *      FileMode.Create));
             */

            ICodeGenerator codeGenerator = CodeGenerator;

            if (codeGenerator == null)
            {
                string errorMessage = "WMICodeGenerator - No code generator available for this language.";
                GeneratorErrorCallback(false, 1, errorMessage, 0, 0);

                Debug.Fail(errorMessage);
                return(null);
            }

            try {
                ManagementClassGenerator mcg = new ManagementClassGenerator();
                string language = "CS";
                switch (GetDefaultExtension().ToUpper())
                {
                case ".VB":
                    language = "VB";
                    break;

                case ".JScript":
                    language = "JS";
                    break;

                default:
                    language = "CS";
                    break;
                }

                if (!mcg.GenerateCode(inputFileContent, codeGenerator, writer, language))
                {
                    throw new Exception("GenerateCode() failed");
                }
            }
            catch (Exception e) {
                string errorMessage = "Code generator: " + codeGenerator.GetType().Name + " failed.  Exception = " + e.Message;
                GeneratorErrorCallback(false, 1, errorMessage, 0, 0);

                Debug.Fail(errorMessage);
                return(null);
            }

            // Set generator progress to 0 out of 100.
            if (progress != null)
            {
                progress.Progress(100, 100);
            }

            writer.Flush();
            return(StreamToBytes(writer.BaseStream));
        }