CodeFacotry1.0.0.4 VS2008插件

         这一版本添加了模板变量的定义,用户完全可以通过模板来描述模板数据的提供;这样大大提高了模板扩展的灵活性。这一版本功能调整主要是以下两方面:

1)修改模板支持变量定义,由插件的propertygrid进行解释模板定义的变量并在模板解释切入到模板中。

2)调整原有代码的生成方式,支持模板定义变量。(用户在编写新的模板时不在需要依赖原有版本固定数据的提供,导致模板处理的内容有所限制),修改原有插入代码没有格式化问题。

通过一个简单的模板例子介绍生成的代码

以下是一个实体生成模板的定义(Entity.cs)

#*define[

var NameSpace = System.String;/*名称空间*/

var tableInfo = CodeFactoryAddin.Base.DBTableInfo,CodeFactoryAddin.Base;/*表结构信息*/

]*#

#set($table=$tableInfo.Table)

#parse("header.vm")

using System;

namespace $namespace

{

 

    [Serializable]

    public class $table.Name

    {

         public $!{table.Name}()

         {

           

         }

#foreach($item in $table.Fields)

         private $item.AppType m$item.Name;

         public $item.AppType $item.Name

         {

              get

              {

                   return m$item.Name;

              }

              set

              {

                   m$item.Name = value;

              }

         }

#end

    }

}

 

#*define[

var NameSpace = System.String;/*名称空间*/

var tableInfo = CodeFactoryAddin.Base.DBTableInfo,CodeFactoryAddin.Base;/*表结构信息*/

]*#

这部分是变量的内容,分别定义了一个String类型的NameSpaceDBTableInfotableInfo.

当类型存在Editor描述的时候,PropertyGrid会自行的处理其信息提供方式。

 

#set($table=$tableInfo.Table)

#parse("header.vm")

using System;

namespace $namespace

{

用过Monorail的朋友对#parse应该比较了解,在模板中插放一个子模板。把公共描述抽取出来:

/*************************************

Company:$!{Company}

Product:$!{Product}

Copyright:$!{Copyright}

Writer:$!{Writer}

EMail:$!{EMail}

CreateTime:$!{createtime}

**************************************/

简单看下生成效果:

 

/*************************************

Company:HFSoft

Product:NClay

Copyright:FanJianHan

Writer:Henry

EMail:henryfan@msn.com

CreateTime:2008-4-2 21:11:45

**************************************/

using System;

namespace Test

{

 

    [Serializable]

    public class Employees

    {

        public Employees()

        {

            //

            // TODO: Add constructor logic here

            //

        }

        private int mEmployeeID;

        public int EmployeeID

        {

            get

            {

                return mEmployeeID;

            }

            set

            {

                mEmployeeID = value;

            }

        }

 

注意:

       新的代码生成模板放在插件的Codes目录下面,原来的TableField目录作废。只需要把新的模板COPYCodes目录插件就能获取得到模板。

 使用演示

下载插件

posted on 2008-04-02 21:32  henry  阅读(4369)  评论(14编辑  收藏  举报

导航