[Mono-dev] mono CodeDom problem

buhochileno at gmail.com buhochileno at gmail.com
Thu Dec 20 17:01:28 EST 2007


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..

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
>>     
>
>
>   




More information about the Mono-devel-list mailing list