实现自定义的VsSingleFileGenerator

用过VS.NET的朋友应该会发现,在编辑一些文件时VS会在文件下面自动创建它的附属文件.而这些附属 文件往往是根据设计文件生成的代码文件来的.对于我们想实现这样的功能怎办呢?其实MS早就为我们想好 了,只要简单地实现IVsSingleFileGenerator;说是简单不过还是要做些功夫的,就是把编写后 VsSingleFileGenerator注册到共公程序集中,然后在注册表里添加一些东西才行.下面介绍自己实现NClay 实体设计的SingleFileGenerator,有需要的朋友可以参考代码实现自己的SingleFileGenerator:)

实现目的编写XML模型描述后自动生成附属C#代码文件.

XML设计文件:

<?xml version="1.0" encoding="utf-8" ?>

<nclay_models xmlns="http://nclay.cn/model.xsd" namespace="Blogs.Entities">

  <class name="User" table="TUser" comment="">

    <id name="UserID" type="System.String"/>

    <property name="UserName" type="System.String"/>

    <property name="UserPWD" type="System.String"/>

    <property name="EMail" type="System.String"/>

    <property name="Enabled" type="System.String"/>

    <property name ="Remark" type="System.String"/>

  </class>

</nclay_models>

生成代码模型文件内容:

    using System;
    using System.Data;
    using NClay.Data;
    using NClay.Data.Mappings;

    [TableMapper(Name="User")]
    public partial class User {

        private void mUserID;

        [PrimaryKey(Name="UserID")]
        public virtual void UserID {
            get {
                return this.mUserID;
            }
            set {
                this.mUserID = value;
            }
        }

        public partial class Mapper : Table {

            private ObjectField mAll;

            private ObjectField mUserID;

            public Mapper() :
                    base("User") {
                this.mAll = new ObjectField("*", this);
                this.mUserID = new ObjectField("UserID", this);
            }

            public virtual ObjectField All {
                get {
                    return this.mAll;
                }
            }

            public virtual ObjectField UserID {
                get {
                    return this.mUserID;
                }
            }
        }
    }

    public partial class ModelContext {

        static User.Mapper mUser = new User.Mapper();

        public static User.Mapper User {
            get {
                return mUser;
            }
        }
    }

时间: 2016-08-07

实现自定义的VsSingleFileGenerator的相关文章

C#代码文件生成扩展代码文件

看到这标题的朋友可能搞不懂到底在搞什么,不过不要紧有兴趣的朋友可以先了解一下 IVsSingleFileGenerator到底是用来做什么用的<实现自定义的VsSingleFileGenerator >;在vs.net里 提供一个IVsSingleFileGenerator接口可以方便地为项目文件生成附属文件,如刚才那文章提到的根据XML 文件自动生成一个附属的C#代码文件;当然这个IVsSingleFileGenerator并不只是针对XML文件,可以是随 便为任何项目文件生成附属文件你只要

iOS8新特性扩展(Extension)应用之四——自定义键盘控件

iOS8新特性扩展(Extension)应用之四--自定义键盘控件         iOS8系统的开放第三方键盘,使得用户在输入法的选择上更加自主灵活,也更加贴近不同语言的输入风格.这篇博客,将介绍如何开发一个第三方的键盘控件. 一.了解UIInputViewController类         UIInputViewController是系统扩展支持键盘扩展的一个类,通过这个类,我们可以自定义一款我们自己的键盘提供给系统使用.         首先,我们先来看一下这个类中的一些属性和方法:

PostgreSQL 11 preview - pgbench 变量、函数扩展 - 暨pgbench 自定义 benchmark讲解

标签 PostgreSQL , pgbench , 压测 , 变量 , tpc-b , 自定义压测 背景 pgbench是PostgreSQL软件包中的一款benchmark软件,纯C编码,效率高,压测方便. 内置TPC-B benchmark测试,同时支持自定义benchmark. 详细文档见 https://www.postgresql.org/docs/10/static/pgbench.html pgbench 自定义benchmark脚本支持的语法 变量赋值的语法 压测需要生成输入变量

AngularJS中的自定义指令的使用介绍

  这篇文章主要介绍了深入讲解AngularJS中的自定义指令的使用,AngularJS是一款热门的JavaScript开发库,需要的朋友可以参考下 AngularJS的自定义指令,就是你自己的指令,加上编译器编译DOM时运行的原生核心函数.这可能很难理解.现在,假设我们想在应用中不同页面复用一些特定的代码,而又不复制代码.那么,我们就可以简单地把这段代码放到单独的文件,并调用使用自定义指令的代码,而不是一遍又一遍地敲下来.这样的代码更容易理解.AngularJS中有四种类型的自定义指令: 元素

教你Word中创建自定义工具栏的技巧

  每个人都有不同的使用电脑的习惯,在Word中也可以让大家实现自己想要的工具栏设置,你大可根据自己的操作习惯来自定义.以下,便是进行自定义工具栏创建的技巧了,感兴趣的可以学习一下. Word 1.打开"自定义"窗口.在菜单栏的"工具"--"自定义", 打开"自定义"窗口,单击切换到"工具栏"选项卡(或者点击菜单栏的"视图"--"工具栏"--"自定义&quo

织梦ckeditor添加自定义按钮,实现自定义样式

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 织梦到了5.7之后编辑器不再是fck,而是升级成了ckeditor3.6.2.在我们对内容页面的body正文部分进行编辑的时候,前台正文部分有的时候需要一个自定义样式,但ckeditor并没有自定义样式涉及. 例如页面:http://www.badubox.com/game/500.html, 可以看到有虚线边框的地方,就是自定义样式. 当然

EMF介绍系列(四、枚举类型、自定义类型和Map)

除了普通的类(接口)以外,在类图里可以定义一些特殊的元素,比较常见的是枚举类型 .自定义类型,它们对于一个完整可用的模型也是必不可少的,这篇帖子主要介绍EMF里它们 的使用方法.另外,由于EMF对Map的支持比较特别,所以在这里也简要介绍一下Map类型的定 义方法. 枚举类型 继续前面帖子的例子,现在要为产品增加一个评分属性,评分值可以是好中差之一,像这 样属性值只能是有限几个值之一的属性就应该定义为枚举类型(Enumeration).在类图里首 先创建一个名为Score的枚举类型,然后为它增加

在Word2010中使用自定义图表模板创建图表

第1步,打开Word2010文档窗口,切换到"插入"功能区.在"插图"分组中单击"图表"按钮,如图1所示. 图1 单击"图表"按钮 第2步,在打开的"插入图表"对话框中单击"模板"选项,在右侧的"我的模板"列表中选中用户创建的自定义模板,并单击"确定"按钮,如图2所示. 图2 "插入图表"对话框 第3步,返回Word2010窗口

自定义dhtmlxGrid表头菜单

dhtmlxGrid可以定义表头菜单以及表格右键菜单,表格右键菜单可以自定义,但是表头菜单只能使用其提供的菜单.dhtmlxGrid默认的表头菜单可以决定表格中每一列是否在表格中显示,并没有提供更多的扩展,如果我想自定义表头菜单,该怎么做呢?本文就是基于自定义表格菜单,说说我的实现方式. 以下是dhtmlxGrid的表头菜单效果: 其功能过于单一,以下是表格右键菜单效果: 如果能够像表格菜单一样自定义表头菜单,那会是一件非常有意义的事情,因为dhtmlxGrid菜单都是一些针对行和单元格的操作,