关于CodeSmith主模板与子模板同时从一个基类继承后的参数传值问题(提供模板下载)

标题好像有点绕啊,

下面说一下场景吧,我有两个CodeSmith的模板Entity.cst与AllEntity.cst文件,它们同时都继承自CommonSqlCode.cs这个文件

代码如下:

<%@ CodeTemplate Language="C#" ResponseEncoding="UTF-8" Src="CommonSqlCode.cs" TargetLanguage="C#" Inherits="XH.CommonSqlCode" Debug="False" Description="Template description here." %>

 

Entity.cst用来生成单个的实体

AllEntity.cst调用Entity.cst实现批量生成实体

在CommonSqlCode.cs文件中我定义了一个公共的属性NameSpace.

 

开始我的理解是:运行AllEntity.cst的话,只发在AllEntity.cst中给NameSpace赋一次值,在Entity.cst中就可以访问到AllEntity.cst中设置的值,因为CommonSqlCode.cs是共用的嘛.

实际的结果是:Entity.cst中是没法取到AllEntity.cst中给NameSpace设置的值,必须在AllEnity.cst调用Entity.cst的时候,显示的传给Entity.cst.

可以这样写this.CopyPropertiesTo(subTemplate)或subTemplate.SetProperty("NameSpace", this.NameSpace)

 

呵,不知道是不是只有我一个人这样理解去了.

 

最后发一个我这几天学习CodeSmith写的一个类似Petshop结构的模板,除了UI层,其它基本上都有

 https://files.cnblogs.com/builderman/codesmith_petshop_demo.rar

 

解压后在Template目录中有所有的模板,

可以直接运行ALL.cst来生成所有的代码,

也可以运行ALL开头的其它模板来生成某一部分文件,

或者运行非ALL开头的模板来生成单个的代码

 

直接打开解决方案可以查看用模板生成的代码

 

 

欢迎大家批评指正

posted @ 2010-03-19 17:20  builderman  阅读(1533)  评论(0编辑  收藏  举报