欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

利用add-in扩展性将代码生成器集成到VS环境中(三)-生成Model层代码

创建时间:2012年12月25日 15:56  阅读次数:(5305)
分享到:
生成Model层代码的文件SetModel.cs源码如下:
public class SetModel
{
//提供对基于视图的编辑操作和选定文本的访问
/*         
 * TextSelection 对象的属性和方法直接反映了 Visual Studio 集成开发环境 (IDE) 中的编辑器命令。
 * 像环境一样,文本选定操作受编辑器全局状态的影响,比如编辑器是处于覆盖模式还是处于虚拟空白模式。
 * 如果影响了只读块中包含的任何字符,或者文本文档本身是只读的,则任何试图修改该文本文档的操作都将失败。
 * 如果关联文档为 HTML 文档,则 TextSelection 对象的某些属性和方法可能会失败。
 * 可能的失败原因是:显示 HTML 文档的窗口不在源视图内,或文本文档背后的数据为锁定状态。
 * TextSelecttion的成员说明:http://msdn.microsoft.com/zh-cn/magazine/envdte.textselection_members(VS.90).aspx
 */
private TextSelection ts;

private TableFrame tableframe;
private string namespacestr;
private string folder;
private string modelname;

public SetModel(TextSelection _ts, TableFrame _tableframe, string _namespacestr, string _modelname, string _folder)
{
    this.ts = _ts;
    this.tableframe = _tableframe;
    this.namespacestr = _namespacestr;
    this.modelname = _modelname;
    this.folder = _folder;
}

public void SetText()
{
    ts.SelectAll();
    //Text是设置或获取选定的文本,所以在这上面需要先全选ts中自动生成的代码,然后再替换。
    ts.Text = GetText().ToString();
}

private StringBuilder GetText()
{
    DataType datatype = new DataType();
    StringBuilder _str = new StringBuilder();

    //注意看下行代码,我在生成的第一行代码前加了注释标识/*,这是因为如果不加这个标识,在生成代码的过程中,vs会自动排版代码,造成代码上下错误,大家可以去掉这个测试一下。
    _str.Append("/*using System;\n");
    _str.Append("namespace ").Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("public class ").Append(tableframe.TableName).Append("\n");
    _str.Append("{").Append("\n");
    foreach (TableColumn col in tableframe.ViewItems)
    {
        _str.Append("public ").Append(datatype.DataTypeList[col.ColumnType].ToString()).Append(" ").Append(col.ColumnName).Append("\n");
        _str.Append("{").Append("\n");
        _str.Append("get;").Append("\n");
        _str.Append("set;").Append("\n");
        _str.Append("}").Append("\n").Append("\n");
    }
    _str.Append("}").Append("\n");
    _str.Append("}").Append("\n");

    return _str;
}
}
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 27+38=? 的结果(结果是:65)
结  果: