[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