[Mono-dev] mono CodeDom problem

buhochileno at gmail.com buhochileno at gmail.com
Fri Dec 21 11:01:24 EST 2007


Thanks Ivan much more better info, work perfect...one question, is 
posible to get the XML representation of some code generated by CodeDom?

thanks.

Mauricio


Ivan N. Zlatev wrote:
> buhochileno at gmail.com wrote:
>   
>> thanks Ivan, bad source info then, the link that you send me is broken, 
>> but of course I'm going to search for better info on the net..
>>
>>     
>
> The link opens fine here. Try this one -
> http://msdn2.microsoft.com/en-us/library/650ax5cx.aspx
>
>   
>> thanks again.
>>
>> Mauricio
>>
>> Ivan N. Zlatev wrote:
>>
>>     
>>> buhochileno at gmail.com wrote:
>>>   
>>>       
>>>> 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?
>>>>
>>>>     
>>>>         
>>> I didn't bother to go through the article, but the code sample is wrong
>>> and broken in many aspects. But to answer your question - there is
>>> nothing wrong with Mono's CodeDom C# code generator. It won't generate
>>> anything more than the namespace essentially because the author never
>>> adds the class to the namespace (e.g via: cnsCodeDom.Types.Add (ctd); ).
>>>
>>> Based on the code sample I wouldn't recommend this article. A good
>>> starting point is
>>> http://msdn2.microsoft.com/en-us/library/aa720100(VS.71).aspx
>>>
>>> Regard,
>>> Ivan Zlatev
>>>
>>>
>>>   
>>>       
>>>> 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(;;){}
>>>>                      }
>>>>    }
>>>> }
>>>>
>>>> _______________________________________________
>>>> Mono-devel-list mailing list
>>>> Mono-devel-list at lists.ximian.com
>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>     
>>>>         
>>>   
>>>       
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>     
>
>
>   




More information about the Mono-devel-list mailing list