private void Build(ElementInfo elment, GeneratorUtil builderUtil) { builderUtil.AppendFormat("public class {0} : BaseNode", elment.Name); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendLine( "#region 属性"); foreach (var attr in elment.XmlAttributes) { builderUtil.AppendLine("public " + attr.Type + attr.Name ); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendLine("get"); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendLine("return this.Dom.Attributes[\"" + attr.Name + "\"].ToT<" + attr.Type + ">();"); builderUtil.Leave(); builderUtil.AppendLine("}"); builderUtil.Leave(); builderUtil.Entry(); builderUtil.AppendLine("set"); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendLine("this.Dom.Attributes[\"" + attr.Name + "\"] = value;"); builderUtil.Leave(); builderUtil.AppendLine("}"); builderUtil.Leave(); builderUtil.AppendLine("}"); } builderUtil.AppendLine("#endregion 属性"); builderUtil.Leave(); //System.Xml.XmlNode n;n.ChildNodes[0].Name builderUtil.Entry(); builderUtil.AppendLine("#region 字段"); foreach (var field in elment.Fields) { builderUtil.AppendLine("public " + field.Type + " " + field.Name); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendFormatLine("get"); builderUtil.Entry(); builderUtil.AppendLine("{"); if (field.Type.StartsWith("List<")) { } else { builderUtil.AppendFormatLine("foreach(var node in this.Dom.ChildNodes)"); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendFormatLine("if(node.Name == \"{0}\")", field.Name); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendFormatLine("return new {0}(node);", field.Name); builderUtil.Leave(); builderUtil.AppendLine("}"); builderUtil.AppendLine("}"); } builderUtil.Leave(); builderUtil.AppendLine("}"); builderUtil.AppendLine(""); builderUtil.AppendLine("}"); } builderUtil.AppendLine("#endregion 字段"); builderUtil.Leave(); builderUtil.Entry(); builderUtil.AppendLine(string.Format("public {0}()" ,elment.Name)); builderUtil.AppendLine("{"); builderUtil.AppendLine("}"); builderUtil.AppendLine(string.Format("public {0}(XmlNode dom):base(dom)" ,elment.Name)); builderUtil.AppendLine("{"); builderUtil.AppendLine("}"); builderUtil.Leave(); builderUtil.AppendLine("}"); }
private void Build(ElementInfo elment, GeneratorUtil builderUtil) { builderUtil.AppendFormatLine("[ConfigurationProperty(\"{0}\")]", elment.Name); foreach (var f in elment.Fields) { if (f.IsGenricList) { builderUtil.AppendFormatLine("[ConfigurationCollection(typeof({0}ConfigCollection), AddItemName = \"{1}\")]",f.GenericArgument, f.Name); } } builderUtil.AppendFormat("public class {0} : ConfigurationSection", elment.Name); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendLine( "#region properties"); foreach (var attr in elment.XmlAttributes) { builderUtil.AppendFormatLine("[ConfigurationProperty(\"{0}\")]",attr.Name); builderUtil.AppendLine("public " + attr.Type + attr.Name ); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendLine("get"); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendLine("return this[\"" + attr.Name + "\"].ToT<" + attr.Type + ">();"); builderUtil.Leave(); builderUtil.AppendLine("}"); builderUtil.Leave(); builderUtil.Entry(); builderUtil.AppendLine("set"); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendLine("this[\"" + attr.Name + "\"] = value;"); builderUtil.Leave(); builderUtil.AppendLine("}"); builderUtil.Leave(); builderUtil.AppendLine("}"); } builderUtil.AppendLine("#endregion properties"); builderUtil.Leave(); //System.Xml.XmlNode n;n.ChildNodes[0].Name builderUtil.Entry(); builderUtil.AppendLine("#region fields"); foreach (var field in elment.Fields) { if (field.IsGenricList) { builderUtil.AppendLine("public " + field.GenericArgument + "ConfigCollection" + field.Name); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.Append("get{"); builderUtil.AppendFormatLine("return ({0}ConfigCollection)base[{1}];", field.GenericArgument, field.Name); builderUtil.Append("}"); builderUtil.Leave(); } else { builderUtil.AppendFormatLine("foreach(var node in this.Dom.ChildNodes)"); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendFormatLine("if(node.Name == \"{0}\")", field.Name); builderUtil.AppendLine("{"); builderUtil.Entry(); builderUtil.AppendFormatLine("return new {0}(node);", field.Name); builderUtil.Leave(); builderUtil.AppendLine("}"); builderUtil.AppendLine("}"); } builderUtil.Leave(); builderUtil.AppendLine("}"); builderUtil.AppendLine(""); builderUtil.AppendLine("}"); } builderUtil.AppendLine("#endregion fields"); builderUtil.Leave(); builderUtil.Entry(); builderUtil.AppendLine(string.Format("public {0}()" ,elment.Name)); builderUtil.AppendLine("{"); builderUtil.AppendLine("}"); builderUtil.AppendLine(string.Format("public {0}(XmlNode dom):base(dom)" ,elment.Name)); builderUtil.AppendLine("{"); builderUtil.AppendLine("}"); builderUtil.Leave(); builderUtil.AppendLine("}"); }