黑马程序员---代码生成器(简单的原理)

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

    在这里我就不像杨中科老师写的稍微复杂的SQL语句了,只是简单的写字段和属性而已,代码生成器主要的原理就是拼接字符串。

   我是使用winfrom应用程序来写的;

具体的代码和注释在下面:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace 代码生成器原理
{
    
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void btnGenerate_Click(object sender, EventArgs e)
        {
            //访问修饰符为属性的访问修饰符

            string modifiers = null;
            string type = null;
            try
            {
                modifiers = cbModifiers.SelectedItem.ToString();  //获取访问级别             
            }
            catch
            {
                //没有选择则默认为私有private的级别
                lbModifiers.Visible = true;
                modifiers = "private";
            }
            if (cbType.SelectedIndex < 0)
            {
                lbType.BackColor = Color.Red;  //没有选择的时候标签背景为红色
                return;
            }
            lbType.BackColor = Color.White;  //颜色为白色
            type = cbType.SelectedItem.ToString();


            string s = txtFieldProperty.Text.Trim(); //获取要生成的文本字符串


            if (s.Length <= 0)
            {
                lbGenerate.Visible = true;  //没有输入的时候标签显示出来
                txtFieldProperty.BackColor = Color.Red;  //输入输入文本背景为红色
                return;
            }


            //都选择和输入文本后,都返回原来的状态和颜色
            lbGenerate.Visible = false;
            txtFieldProperty.BackColor = Color.White;
            lbModifiers.Visible = false;  //不显示访问标签


            char[] chs = s.ToCharArray();  //把输入的文本转换成字符数组
            string sFirst = chs[0].ToString().ToUpper(); //转换输入字符串首字符为大写
            string str = null;
            for (int i = 1; i < chs.Length; i++)
            {
                str += chs[i];
            }
            str = sFirst + str;  //首字母转换成大写后累加之后的字符串
            if (s == str) //一开始首字母为大写,则在该字符串中添加1字符
            {
                str += "1";
            }


            StringBuilder sb = new StringBuilder(); //大量的字符串,我们一般使用StringBuilder类
            //接下来就是拼接字符串了
            sb.Append("class ").Append("Person ").AppendLine(); //默认类都为Person
            sb.AppendLine("{");
            //默认字段的访问级别都为私有的
            sb.Append("    private ").Append(type+" ").Append(s+ ";").AppendLine(); 
            sb.Append("    "+modifiers).Append(" "+type+" ").Append(str).AppendLine();
            sb.Append("    {").AppendLine();
            sb.Append("        set;").AppendLine();
            sb.Append("        get;").AppendLine();
            sb.Append("    }").AppendLine();
            sb.AppendLine("}");
            txtResult.Text = sb.ToString();
        }
    }
}

以上就是我所认识的简单代码生成器原理

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值