CodeSmith將模板文件批量生成文件的方法 - 空空如也 - 博客園

以前寫codeSmith模板的時候,如果直接像asp一樣混排編寫的話,代碼輸出來codeSmith中,不知道怎麼保存到文件,後來把所有要輸出的模板文字都用stringBuiler串接起來然後IO到文件中,但是這樣codesmith寫起來太麻煩,界面高亮以及智能提示都不理想,所以非常的亂,而且沒法一下子把所有的類的模板一次性生成(全寫在一個裏面太亂,不便管理,以及以後只需生成一部分時也沒法單獨生成),但看codeSimth裏面的例子之後,發現別人的模板都是一個一個獨立開的,通過一個主模板生成方案,要單個生成就用單個模板去生成好了,於是花了點時間看了下NetTiers的生成方法,終於找到了眉目,在這裏發出來給還沒有解決這個問題的朋友一個參考!

第一步:接下來把你要用來生成的子模板註冊到主模板中去,代碼很簡單,如下:

<%@ Register Name="MyEntityClass" Template="C:/MyEntityClass.cst" MergeProperties="False" ExcludeProperties=""%>

Name="MyEntityClass" 模板好像會被註冊成一個CodeTemplate的派生類,MyEntityClass會是這個類的名字;

C:/MyEntityClass.cst爲你模板的位置,相對位置也可以;

第二步:爲模板添加屬性

 當然,我們獨立的子模板出會有屬性需要設置,這個地方可以利用反射來賦值,代碼如下:

CodeTemplate codeTemplate=new MyEntityClassKey();

CodeTemplate.SetProperty("IncludeGet"SetProperty)

CodeTemplate.SetProperty("IncludeFind", IncludeFind);
codeTemplate.SetProperty("IncludeSave", IncludeSave);

上面的IncludeGet,IncludeFind就是模板C:/MyEntityClass.cst的一些屬性了!後面就是爲其設置的值了!

codeTemplate.RenderToFile("c:/3.txt", true);

搞定!後面參數,第一個是輸出的地址,第二個是是否覆蓋!

還有好多的重載,我就不提了!自己可以慢慢看!

這個功能有什麼用呢?當然有用啦,我們寫好一系列的模板之後,一個一個去生成那不太累了,而且參數設置來設置去,都差不多,有了這個功能

我可以將它們一次生成出來,簡單省事!

 好的,到這一步爲止,就簡單的把NetTiers的模板生成給偷過來了!如果對codesmith不太瞭解的朋友,可以參考園子裏其它前輩的相關教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章