[Mono-dev] mono CodeDom problem

buhochileno at gmail.com buhochileno at gmail.com
Thu Dec 20 15:31:13 EST 2007


Hi Guys:

I have this code from a example of a simple code generator with CodeDom 
(from here http://www.15seconds.com/issue/020917.htm , I list the code 
at end of the message), but with mono I only get the using and namespace 
declarations...I see in the status page of mono that the codedom is 
allmost complete, do you have some examples?

thanks

Mauricio

    using System;
    using System.CodeDom;
    using System.CodeDom.Compiler;
    using System.Reflection;
    using System.IO;
    using Microsoft.CSharp;
    using Microsoft.VisualBasic;

   namespace CodeDomPartOne
  {
   ///
   /// Summary description for Briefcase.
   ///
   public class Briefcase
   {
   //Member Variables          private string m_strFileName;      
private string m_Suffix = ".cs";

   public Briefcase(string strFileName)
   {
       m_strFileName = strFileName;          }            public void 
CreateCodeDomBriefcase()
   {
    //Initialize CodeDom Variables
           //para windows
    //Stream s = File.Open("c:\\" + m_strFileName + m_Suffix, 
FileMode.Create);
       //para linux
    Stream s = File.Open("" + m_strFileName + m_Suffix, FileMode.Create);

           StreamWriter sw = new StreamWriter(s);
              CSharpCodeProvider cscProvider = new CSharpCodeProvider();
    ICodeGenerator cscg = cscProvider.CreateGenerator(sw);               
CodeGeneratorOptions cop = new CodeGeneratorOptions();              
    //Create Class Using Statements
    CodeSnippetCompileUnit csu1 = new CodeSnippetCompileUnit("using 
System");
    CodeSnippetCompileUnit csu2 = new CodeSnippetCompileUnit("using 
System.IO");       cscg.GenerateCodeFromCompileUnit(csu1, sw, cop);
    cscg.GenerateCodeFromCompileUnit(csu2, sw, cop);
    sw.WriteLine();
              //Create Class Namespaces
    CodeNamespace cnsCodeDom = new CodeNamespace("CodeDom");            
                            //Create Class Declaration
    CodeTypeDeclaration ctd = new CodeTypeDeclaration();
    ctd.IsClass = true;           ctd.Name = "Briefcase";
    ctd.TypeAttributes = TypeAttributes.Public;
              //Create Class Member Fields       
sw.WriteLine();                   CodeMemberField cmfBriefcaseName = new 
CodeMemberField("string","m_BriefcaseName");
    cmfBriefcaseName.Attributes = 
MemberAttributes.Private;                   
ctd.Members.Add(cmfBriefcaseName);                         
CodeMemberField cmfBriefcaseTitle = new CodeMemberField("string", 
"m_BriefcaseTitle");
    cmfBriefcaseTitle.Attributes = MemberAttributes.Private;
    ctd.Members.Add(cmfBriefcaseTitle);                                 
CodeMemberField cmfBriefcaseID = new CodeMemberField("int", 
"m_cmfBriefcaseID");
    cmfBriefcaseID.Attributes = MemberAttributes.Private;               
ctd.Members.Add(cmfBriefcaseID);

    CodeMemberField cmfBriefcaseSectionID = new CodeMemberField("int", 
"m_BriefcaseSectionID");
    cmfBriefcaseSectionID.Attributes = MemberAttributes.Private;       
ctd.Members.Add(cmfBriefcaseSectionID);

    CodeMemberField cmfBriefcaseFolderID = new CodeMemberField("int", 
"m_BriefcaseFolderID");
    cmfBriefcaseFolderID.Attributes = MemberAttributes.Private;
    ctd.Members.Add(cmfBriefcaseFolderID);

    CodeMemberField cmfBriefcaseItemID = new CodeMemberField("int", 
"m_BriefcaseItemID");
    cmfBriefcaseItemID.Attributes = MemberAttributes.Private;
    ctd.Members.Add(cmfBriefcaseItemID);                  
    //Create Class Constructor                   CodeConstructor ccon = 
new CodeConstructor();
    ccon.Attributes = MemberAttributes.Public;
    ccon.Statements.Add(new CodeSnippetStatement("//"));
    ccon.Statements.Add(new CodeSnippetStatement("// TODO: Add 
constructor logic here"));
    ccon.Statements.Add(new CodeSnippetStatement("//"));                
      ctd.Members.Add(ccon);                      
    //Create Class BriefcaseName Property
    CodeMemberProperty mpBriefcaseName = new CodeMemberProperty();
    mpBriefcaseName.Attributes = MemberAttributes.Private;
    mpBriefcaseName.Type = new CodeTypeReference("string");
    mpBriefcaseName.Name = "BriefcaseName";                   
mpBriefcaseName.HasGet = true;               
mpBriefcaseName.GetStatements.Add(new CodeSnippetExpression("return 
m_BriefcaseName"));
    mpBriefcaseName.HasSet = true;
    mpBriefcaseName.SetStatements.Add(new 
CodeSnippetExpression("m_BriefcaseName = value"));
    ctd.Members.Add(mpBriefcaseName);                         //Create 
Class BriefcaseTitle Property
    CodeMemberProperty mpBriefcaseTitle = new CodeMemberProperty();
    mpBriefcaseTitle.Attributes = MemberAttributes.Private;
    mpBriefcaseTitle.Type = new CodeTypeReference("string");
    mpBriefcaseTitle.Name = "BriefcaseTitle";               
mpBriefcaseTitle.HasGet = true;
     mpBriefcaseTitle.GetStatements.Add(new 
CodeSnippetExpression("return m_BriefcaseTitle"));
     mpBriefcaseTitle.HasSet = true;
     mpBriefcaseTitle.SetStatements.Add(new 
CodeSnippetExpression("m_BriefcaseTitle = value"));
     ctd.Members.Add(mpBriefcaseTitle);

     //Create Class BriefcaseID Property
     CodeMemberProperty mpBriefcaseID = new CodeMemberProperty();
     mpBriefcaseID.Attributes = MemberAttributes.Private;
     mpBriefcaseID.Type = new CodeTypeReference("int");
     mpBriefcaseID.Name = "BriefcaseID";            mpBriefcaseID.HasGet 
= true;
     mpBriefcaseID.GetStatements.Add(new 
CodeSnippetExpression("m_BriefcaseID"));
     mpBriefcaseID.HasSet = true;
     mpBriefcaseID.SetStatements.Add(new 
CodeSnippetExpression("m_BriefcaseID = value"));
     ctd.Members.Add(mpBriefcaseID);

     //Create Class BriefcaseSection Property
     CodeMemberProperty mpBriefcaseSection = new CodeMemberProperty();
     mpBriefcaseSection.Attributes = MemberAttributes.Private;
     mpBriefcaseSection.Type = new CodeTypeReference("int");
     mpBriefcaseSection.Name = "BriefcaseSection";                    
mpBriefcaseSection.HasGet = true;
     mpBriefcaseSection.GetStatements.Add(new CodeSnippetExpression
         ("return m_BriefcaseSectionID"));
     mpBriefcaseSection.HasSet = true;
     mpBriefcaseSection.SetStatements.Add(new CodeSnippetExpression
         ("m_BriefcaseSectionID = value"));
     ctd.Members.Add(mpBriefcaseSection);

     //Create Class BriefcaseFolder Property
     CodeMemberProperty mpBriefcaseFolder = new CodeMemberProperty();
     mpBriefcaseFolder.Attributes = MemberAttributes.Private;
     mpBriefcaseFolder.Type = new CodeTypeReference("int");
     mpBriefcaseFolder.Name = "BriefcaseFolder";                
mpBriefcaseFolder.HasGet = true;
     mpBriefcaseFolder.GetStatements.Add(new 
CodeSnippetExpression("return m_BriefcaseFlderID"));
     mpBriefcaseFolder.HasSet = true;
     mpBriefcaseFolder.SetStatements.Add(new 
CodeSnippetExpression("m_BriefcaseFolderID = value"));
     ctd.Members.Add(mpBriefcaseFolder);

     //Create Class BriefcaseItem Property
     CodeMemberProperty mpBriefcaseItem = new CodeMemberProperty();
     mpBriefcaseItem.Attributes = MemberAttributes.Private;
     mpBriefcaseItem.Type = new CodeTypeReference("string");
     mpBriefcaseItem.Name = "BriefcaseItem";            
mpBriefcaseItem.HasGet = true;
     mpBriefcaseItem.GetStatements.Add(new CodeSnippetExpression("return 
m_BriefcaseItemID"));
     mpBriefcaseItem.HasSet = true;
     mpBriefcaseItem.SetStatements.Add(new 
CodeSnippetExpression("m_BriefcaseItemID = value"));
     ctd.Members.Add(mpBriefcaseItem);          
     //Create Class GetBriefcaseName Method
     CodeMemberMethod mtd1 = new CodeMemberMethod();
     mtd1.Name = "GetBriefcaseName";
     mtd1.ReturnType = new CodeTypeReference("String");
     mtd1.Attributes = MemberAttributes.Public;
     mtd1.Statements.Add(new CodeSnippetStatement("return 
BriefcaseName;"));
     ctd.Members.Add(mtd1);
           //Create Class GetBriefcaseTitle Method
     CodeMemberMethod mtd2 = new CodeMemberMethod();
     mtd2.Name = "GetBriefcaseTitle";
     mtd2.ReturnType = new CodeTypeReference("String");
     mtd2.Attributes = MemberAttributes.Public;
     mtd2.Statements.Add(new CodeSnippetStatement("return 
BriefcaseTitle;"));
     ctd.Members.Add(mtd2);

     //Create Class GetBriefcaseID Method
     CodeMemberMethod mtd3 = new CodeMemberMethod();
     mtd3.Name = "GetBriefcaseID";
     mtd3.ReturnType = new CodeTypeReference("Int");
     mtd3.Attributes = MemberAttributes.Public;
     mtd3.Statements.Add(new CodeSnippetStatement("return BriefcaseID;"));
     ctd.Members.Add(mtd3);

     //Create Class GetBriefcaseSection Method
     CodeMemberMethod mtd4 = new CodeMemberMethod();
     mtd4.Name = "GetBriefcaseSectionID";
     mtd4.ReturnType = new CodeTypeReference("Int");
     mtd4.Attributes = MemberAttributes.Public;
     mtd4.Statements.Add(new CodeSnippetStatement("return 
BriefcaseSectionID;"));
     ctd.Members.Add(mtd4);

     //Create Class GetBriefcaseFolder Method
     CodeMemberMethod mtd5 = new CodeMemberMethod();
     mtd5.Name = "GetBriefcaseFolderID";
     mtd5.ReturnType = new CodeTypeReference("Int");
     mtd5.Attributes = MemberAttributes.Public;
     mtd5.Statements.Add(new CodeSnippetStatement("return 
BriefcaseFolderID;"));
     ctd.Members.Add(mtd5);

     //Create Class GetBriefcaseItem Method
     CodeMemberMethod mtd6 = new CodeMemberMethod();
     mtd6.Name = "GetBriefcaseItemID";                mtd6.ReturnType = 
new CodeTypeReference("Int");
     mtd6.Attributes = MemberAttributes.Public;
     mtd6.Statements.Add(new CodeSnippetStatement("return 
BriefcaseItemID;"));
     ctd.Members.Add(mtd6);
     //Generate Source Code File
     cscg.GenerateCodeFromNamespace(cnsCodeDom, sw, cop);

     //Close StreamWriter
     sw.Close();
     s.Close();
 }
}
}



namespace CodeDomPartOne
{
   class MainClass
   {
       public static void Main(string[] args)
       {
           Console.WriteLine("Hello CodeDom");
           Briefcase myBriefCase = new Briefcase("generado");
           myBriefCase.CreateCodeDomBriefcase();
           for(;;){}
                     }
   }
}




More information about the Mono-devel-list mailing list