---------------------- 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();
}
}
}
以上就是我所认识的简单代码生成器原理