代码改变世界

CodeSmith模板引擎系列二--文件目录树

  破狼  阅读(1672)  评论(5编辑  收藏  举报

   今天网上Google了一下,关于CodeSmith的资料已经很全了,其中有TerryLee努力学习的小熊 两位大牛的很详尽,所以我也不准备把CodeSmith讲的很细致了,如果是新手学习者可以参考上面两位大牛的CodeSmith文章,CodeSmith的语法与ASP语法接近,语言可以选择我们的c#,所以学习起来很轻松。今天就写一个简单的文件目录树结构的递归模板。

Template Code:

 

复制代码
代码
<%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" 
   Description
="Template description here." %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="System.Data" %>
<%@ Assembly Name="System" %>
<%@ Import Namespace="System.IO" %> 

-----------------------------------------------------------------
 
-- Date Created: <%= DateTime.Now.ToLongDateString() %>
 
-- Createdy:   B Generated by Wolf
 
-----------------------------------------------------------------
 
<script runat="template">
        
private string path;
        [Editor(
typeof(System.Windows.Forms.Design.FolderNameEditor),

         
typeof(System.Drawing.Design.UITypeEditor))] 
        
public string Path
        {
            
get{return this.path;}    
            
set{this.path=value;}
        }
        
public void GetFolderString(string fload,string indexStr)
        {
            
if(string.IsNullOrEmpty(fload))
                
throw new System.ArgumentNullException("fload");
            Response.WriteLine(indexStr
+fload);
            indexStr
+="----";            
            
if(System.IO.Directory.Exists(fload))
            {
                
string[] childfolder= System.IO.Directory.GetDirectories(fload);
                
string[] childfile= System.IO.Directory.GetFiles(fload);
                
foreach(string item in childfolder)
                {
                    
this.GetFolderString(item,indexStr);
                }
                
foreach(string item in childfile)
                {
                    
this.GetFolderString(item,indexStr);
                }
            }
        }
        
public void Start()
        {
            
this.GetFolderString(this.path,"");
        }
</script>
<% this.Start(); %>
复制代码

 

 

4
模板生成代码比较简单,就不在这里多讲述了,只是拿来展示一下CodeSmith模板对于生成基于Ascii语言文件的强大威力:
image
4
内容比较少今天就到这里。
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示