예제 #1
0
 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();
         }
     }
 }
예제 #2
0
        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();
            }
        }
예제 #3
0
 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();
     }
 }
예제 #4
0
 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();
     }
 }
예제 #5
0
        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();
            }
        }
예제 #7
0
        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());
            }
        }
예제 #8
0
        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();
            }
        }
예제 #9
0
        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());
            }
        }
예제 #10
0
 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();
            }
        }