[Mono-dev] mono CodeDom problem
Ivan N. Zlatev
contact at i-nz.net
Thu Dec 20 19:04:37 EST 2007
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