CodeSmith实用技巧(二):使用FileNameEditor

FileNameEditor类给我们提供了在CodeSmith属性面板中弹出打开或保存文件对话框的方式,在使用时,首先在模版中得添加对程序集CodeSmith.CustomProperties的引用。然后就可以在模版中定义一个属性来使用FileNameEditor

 1 < script runat = " template " >
 2
 3 private   string  _userFileName  =   @" c:\temp\test.txt " ;
 4
 5  
 6
 7 [Editor( typeof (FileNameEditor),  typeof (System.Drawing.Design.UITypeEditor)),
 8
 9 Category( " Custom " ), Description( " User selected file. " )]
10
11  
12
13 public   string  UserFileName
14
15 {
16
17      get {return _userFileName;}
18
19      set {_userFileName= value;}
20
21}

22
23 </ script >
24
25

当我们执行该模版时,在属性面板中同样显示为一个按钮:

CodeSmith实用技巧(二):使用FileNameEditor

单击该按钮,弹出一个保存文件的对话框:

CodeSmith实用技巧(二):使用FileNameEditor

我们也可以通过FileDialogAttribute来自定义弹出的对话框,修改模版为:

 1 private   string  _openFileName  =   @" c:\temp\test.txt " ;
 2
 3
 4 [Editor( typeof (FileNameEditor),  typeof (System.Drawing.Design.UITypeEditor)),
 5
 6 FileDialogAttribute(FileDialogType.Open, Title = " Select Input File " ),
 7
 8 Category( " Custom " ), Description( " User selected file. " )]
 9
10  
11
12 public   string  OpenFileName
13
14 {
15
16      get {return _openFileName;}
17
18      set {_openFileName= value;}
19
20}

21
22

弹出的对话框如下所示:

CodeSmith实用技巧(二):使用FileNameEditor

当我们想用一个文件夹的名称来代替文件时,可以使用FolderNameEditor类。

 1 <% @ Assembly Name = " System.Design "   %>
 2 < script runat = " template " >
 3 private   string  _outputDirectory  =   @" c:\temp " ;
 4 [Editor( typeof (System.Windows.Forms.Design.FolderNameEditor),  typeof (System.Drawing.Design.UITypeEditor)),
 5 Category( " Custom " ), Description( " Output directory. " )]
 6 public   string  OutputDirectory
 7 {
 8       get {return _outputDirectory;}
 9       set {_outputDirectory= value;}
10}

11 </ script >
12
13

FileNameEditor重要方法和属性介绍:

公共方法:

名称

描述

EditValue

使用由 GetEditStyle 方法提供的编辑器样式编辑指定的对象

GetEditStyle

获取 EditValue 方法所使用的编辑样式

 

你可能感兴趣的:(editor)