private void GenerateVB() { using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringWriter sw = new StringWriter(); if (_method.Statements.Count > 0) { _method.Attributes = MemberAttributes.Private; provider.GenerateCodeFromMember(_method, sw, opts); Text = sw.GetStringBuilder().ToString(); } else { provider.GenerateCodeFromMember(_method, sw, opts); StringReader sr = new StringReader(sw.GetStringBuilder().ToString()); string line = sr.ReadLine(); while (string.IsNullOrEmpty(line)) { line = sr.ReadLine(); } int idx = line.IndexOf(" " + _method.Name + "("); idx = line.LastIndexOf(' ', idx - 1); Text = "Partial Private" + line.Remove(0, idx); Text = sw.GetStringBuilder().Replace(line, Text).ToString(); } } }
private void GenerateVB() { using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringWriter sw = new StringWriter(); provider.GenerateCodeFromMember(_property, sw, opts); StringReader sr = new StringReader(sw.GetStringBuilder().ToString()); string line = sr.ReadLine(); while (string.IsNullOrEmpty(line)) { line = sr.ReadLine(); } int idx = line.IndexOf(" " + _property.Name + "("); int asIdx = line.LastIndexOf(" As "); StringBuilder sb = new StringBuilder(); sb.Append((IsDefault?"Default ":string.Empty) + line.Substring(0, idx + _property.Name.Length + 2)); foreach (CodeParameterDeclarationExpression parameter in Parameters) { provider.GenerateCodeFromExpression(parameter, new StringWriter(sb), opts); sb.Append(", "); } sb.Length -= 2; sb.Append(")").Append(line.Substring(asIdx)); Text = sw.GetStringBuilder().Replace(line, sb.ToString()).ToString(); } }
private void GenerateVB() { using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringBuilder sb = new StringBuilder(); using (IndentedTextWriter tw = new IndentedTextWriter(new StringWriter(sb), opts.IndentString)) { provider.GenerateCodeFromMember(Field, tw, opts); sb.Replace(" " + Field.Name, " ReadOnly " + Field.Name); } Text = sb.ToString(); } }
private void GenerateVB() { using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringBuilder sb = new StringBuilder(); using (IndentedTextWriter tw = new IndentedTextWriter(new StringWriter(sb), opts.IndentString)) { provider.GenerateCodeFromMember(Field, tw, opts); sb.Replace(" " + Field.Name, " ReadOnly " + Field.Name); } Text = sb.ToString(); } }
private void GenerateVB() { using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringWriter sw = new StringWriter(); List <CodeTypeReference> implTypes = new List <CodeTypeReference>(); if (_property.ImplementationTypes != null) { var arr = new CodeTypeReference[_property.ImplementationTypes.Count]; _property.ImplementationTypes.CopyTo(arr, 0); _property.ImplementationTypes.Clear(); implTypes.AddRange(arr); } provider.GenerateCodeFromMember(_property, sw, opts); foreach (CodeTypeReference tr in implTypes) { _property.ImplementationTypes.Add(tr); } StringReader sr = new StringReader(sw.GetStringBuilder().ToString()); string line = sr.ReadLine(); while (string.IsNullOrEmpty(line) || line.StartsWith("'") || line.StartsWith("<")) { line = sr.ReadLine(); } StringBuilder sb = new StringBuilder(); sb.Append(line); if (InterfaceProperties != null) { sb.Append(" Implements "); foreach (CodeTypeReference tr in implTypes) { string prop; if (InterfaceProperties.TryGetValue(tr, out prop)) { sb.Append(provider.GetTypeOutput(tr)).Append(".").Append(prop).Append(", "); } } sb.Length -= 2; } Text = sw.GetStringBuilder().Replace(line, sb.ToString()).ToString(); } }
private void GenerateVB() { using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringWriter sw = new StringWriter(); List <CodeTypeReference> implTypes = new List <CodeTypeReference>(); if (_property.ImplementationTypes != null) { implTypes.AddRange(_property.ImplementationTypes.Cast <CodeTypeReference>().Distinct(new CodeTypeReferenceEqualityComparer())); _property.ImplementationTypes.Clear(); } provider.GenerateCodeFromMember(_property, sw, opts); foreach (CodeTypeReference tr in implTypes) { _property.ImplementationTypes.Add(tr); } StringReader sr = new StringReader(sw.GetStringBuilder().ToString()); string line = sr.ReadLine(); while (string.IsNullOrEmpty(line) || line.StartsWith("'") || line.StartsWith("<")) { line = sr.ReadLine(); } StringBuilder sb = new StringBuilder(); sb.Append(line); if (InterfaceProperties != null) { sb.Append(" Implements "); foreach (CodeTypeReference tr in implTypes) { foreach (var prop in InterfaceProperties.Where(it => it.Item1.IsEquals(tr))) { sb.Append(provider.GetTypeOutput(tr)).Append(".").Append(prop.Item2).Append(", "); } } sb.Length -= 2; } Text = sw.GetStringBuilder().Replace(line, sb.ToString()).ToString(); } }
public void GenerateCode(CodeDomGenerator.Language language) { switch (language) { case CodeDomGenerator.Language.CSharp: using (CSharpCodeProvider provider = new CSharpCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringBuilder sb = new StringBuilder(); using (IndentedTextWriter tw = new IndentedTextWriter(new StringWriter(sb), opts.IndentString)) { provider.GenerateCodeFromMember(Event, tw, opts); sb.Replace(";", string.Empty); tw.WriteLine("{"); tw.Indent++; GenrateMeth(opts, provider, tw, AddMethod.GetStatements, "add"); GenrateMeth(opts, provider, tw, RemoveMethod.GetStatements, "remove"); tw.Indent--; tw.WriteLine("}"); } Text = sb.ToString(); } break; case CodeDomGenerator.Language.VB: using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); var args = new StringWriter(); provider.GenerateCodeFromExpression(new CodeParameterDeclarationExpression(Event.Type, "value"), args, opts); StringBuilder sb = new StringBuilder(); using (IndentedTextWriter tw = new IndentedTextWriter(new StringWriter(sb), opts.IndentString)) { provider.GenerateCodeFromMember(Event, tw, opts); sb.Replace(" Event ", " Custom Event "); tw.Indent++; tw.WriteLine("AddHandler({0})", args.GetStringBuilder()); tw.Indent++; foreach (CodeStatement statement in AddMethod.GetStatements) { provider.GenerateCodeFromStatement(statement, tw, opts); } tw.Indent--; tw.WriteLine("End AddHandler"); tw.WriteLine("RemoveHandler({0})", args.GetStringBuilder()); tw.Indent++; foreach (CodeStatement statement in RemoveMethod.GetStatements) { provider.GenerateCodeFromStatement(statement, tw, opts); } tw.Indent--; tw.WriteLine("End RemoveHandler"); //args = new StringWriter(); //provider.GenerateCodeFromMember(RaiseMethod, args, opts); //StringReader sr = new StringReader(args.GetStringBuilder().ToString()); //string line = sr.ReadLine(); //while (string.IsNullOrEmpty(line)) // line = sr.ReadLine(); //int idx = line.IndexOf(" " + RaiseMethod.Name); //args.GetStringBuilder().Replace(line, "RaiseEvent" + line.Substring(idx + RaiseMethod.Name.Length + 1)); //tw.Write(args.GetStringBuilder().ToString()); tw.Write("RaiseEvent("); for (int i = 0; i < RaiseMethod.Parameters.Count; i++) { if (i > 0) { tw.Write(", "); } provider.GenerateCodeFromExpression(RaiseMethod.Parameters[i], tw, opts); } tw.WriteLine(")"); tw.Indent++; foreach (CodeStatement statement in RaiseMethod.Statements) { provider.GenerateCodeFromStatement(statement, tw, opts); } tw.Indent--; tw.WriteLine("End RaiseEvent"); tw.Indent--; tw.WriteLine("End Event"); } Text = sb.ToString(); } break; default: throw new NotImplementedException(language.ToString()); } }
private void GenerateVB() { using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringWriter sw = new StringWriter(); provider.GenerateCodeFromMember(_property, sw, opts); StringReader sr = new StringReader(sw.GetStringBuilder().ToString()); string line = sr.ReadLine(); while (string.IsNullOrEmpty(line)) line = sr.ReadLine(); int idx = line.IndexOf(" " + _property.Name + "("); int asIdx = line.LastIndexOf(" As "); StringBuilder sb = new StringBuilder(); sb.Append((IsDefault?"Default ":string.Empty) + line.Substring(0, idx+_property.Name.Length+2)); foreach (CodeParameterDeclarationExpression parameter in Parameters) { provider.GenerateCodeFromExpression(parameter, new StringWriter(sb), opts); sb.Append(", "); } sb.Length -= 2; sb.Append(")").Append(line.Substring(asIdx)); Text = sw.GetStringBuilder().Replace(line, sb.ToString()).ToString(); } }
public void GenerateCode(CodeDomGenerator.Language language) { switch (language) { case CodeDomGenerator.Language.CSharp: using (CSharpCodeProvider provider = new CSharpCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringBuilder sb = new StringBuilder(); using (IndentedTextWriter tw = new IndentedTextWriter(new StringWriter(sb), opts.IndentString)) { provider.GenerateCodeFromMember(Event, tw, opts); sb.Replace(";",string.Empty); tw.WriteLine("{"); tw.Indent++; GenrateMeth(opts, provider, tw, AddMethod.GetStatements, "add"); GenrateMeth(opts, provider, tw, RemoveMethod.GetStatements, "remove"); tw.Indent--; tw.WriteLine("}"); } Text = sb.ToString(); } break; case CodeDomGenerator.Language.VB: using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); var args = new StringWriter(); provider.GenerateCodeFromExpression(new CodeParameterDeclarationExpression(Event.Type, "value"), args, opts); StringBuilder sb = new StringBuilder(); using (IndentedTextWriter tw = new IndentedTextWriter(new StringWriter(sb), opts.IndentString)) { provider.GenerateCodeFromMember(Event, tw, opts); sb.Replace(" Event ", " Custom Event "); tw.Indent++; tw.WriteLine("AddHandler({0})", args.GetStringBuilder()); tw.Indent++; foreach (CodeStatement statement in AddMethod.GetStatements) { provider.GenerateCodeFromStatement(statement, tw, opts); } tw.Indent--; tw.WriteLine("End AddHandler"); tw.WriteLine("RemoveHandler({0})", args.GetStringBuilder()); tw.Indent++; foreach (CodeStatement statement in RemoveMethod.GetStatements) { provider.GenerateCodeFromStatement(statement, tw, opts); } tw.Indent--; tw.WriteLine("End RemoveHandler"); //args = new StringWriter(); //provider.GenerateCodeFromMember(RaiseMethod, args, opts); //StringReader sr = new StringReader(args.GetStringBuilder().ToString()); //string line = sr.ReadLine(); //while (string.IsNullOrEmpty(line)) // line = sr.ReadLine(); //int idx = line.IndexOf(" " + RaiseMethod.Name); //args.GetStringBuilder().Replace(line, "RaiseEvent" + line.Substring(idx + RaiseMethod.Name.Length + 1)); //tw.Write(args.GetStringBuilder().ToString()); tw.Write("RaiseEvent("); for (int i = 0; i < RaiseMethod.Parameters.Count;i++) { if (i > 0) tw.Write(", "); provider.GenerateCodeFromExpression(RaiseMethod.Parameters[i], tw, opts); } tw.WriteLine(")"); tw.Indent++; foreach (CodeStatement statement in RaiseMethod.Statements) { provider.GenerateCodeFromStatement(statement, tw, opts); } tw.Indent--; tw.WriteLine("End RaiseEvent"); tw.Indent--; tw.WriteLine("End Event"); } Text = sb.ToString(); } break; default: throw new NotImplementedException(language.ToString()); } }
private void GenerateVB() { using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringWriter sw = new StringWriter(); if (_method.Statements.Count > 0) { _method.Attributes = MemberAttributes.Private; provider.GenerateCodeFromMember(_method, sw, opts); Text = sw.GetStringBuilder().ToString(); } else { provider.GenerateCodeFromMember(_method, sw, opts); StringReader sr = new StringReader(sw.GetStringBuilder().ToString()); string line = sr.ReadLine(); while (string.IsNullOrEmpty(line)) line = sr.ReadLine(); int idx = line.IndexOf(" " + _method.Name + "("); idx = line.LastIndexOf(' ', idx - 1); Text = "Partial Private" + line.Remove(0, idx); Text = sw.GetStringBuilder().Replace(line, Text).ToString(); } } }
private void GenerateVB() { using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider()) { CodeGeneratorOptions opts = new CodeGeneratorOptions(); StringWriter sw = new StringWriter(); List<CodeTypeReference> implTypes = new List<CodeTypeReference>(); if (_property.ImplementationTypes != null) { var arr = new CodeTypeReference[_property.ImplementationTypes.Count]; _property.ImplementationTypes.CopyTo(arr, 0); _property.ImplementationTypes.Clear(); implTypes.AddRange(arr); } provider.GenerateCodeFromMember(_property, sw, opts); foreach (CodeTypeReference tr in implTypes) { _property.ImplementationTypes.Add(tr); } StringReader sr = new StringReader(sw.GetStringBuilder().ToString()); string line = sr.ReadLine(); while (string.IsNullOrEmpty(line) || line.StartsWith("'") || line.StartsWith("<")) line = sr.ReadLine(); StringBuilder sb = new StringBuilder(); sb.Append(line); if (InterfaceProperties != null) { sb.Append(" Implements "); foreach (CodeTypeReference tr in implTypes) { string prop; if (InterfaceProperties.TryGetValue(tr, out prop)) { sb.Append(provider.GetTypeOutput(tr)).Append(".").Append(prop).Append(", "); } } sb.Length -= 2; } Text = sw.GetStringBuilder().Replace(line, sb.ToString()).ToString(); } }