StringCollection
提供了一种集合的输入方式,在代码中,可以用
Array
的方式来引用。在使用这个类之前,在模版中我们必须添加对
CodeSmith.CustomProperties
程序集的引用:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
<%
@ Assembly Name
=
"
CodeSmith.CustomProperties
"
%>
添加完程序集之后,我们就可以使用
StringCollection
在脚本块中定义一个属性:
<%
@ Property Name
=
"
List
"
Type
=
"
CodeSmith.CustomProperties.StringCollection
"
Category
=
"
Custom
"
Description
=
"
This is a sample StringCollection
"
%>
执行该模版时,这个属性将在属性窗体中显示为一个按钮:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />![PIC051.JPG](https://i-blog.csdnimg.cn/blog_migrate/58e4f4fd1ba67691c635cf9034f5174a.jpeg)
单击按钮,将会弹出一个String Collection Editor对话框:
![PIC052.JPG](https://i-blog.csdnimg.cn/blog_migrate/2db8c5921656f220aa2d995663d61b65.jpeg)
当然也可以直接在属性窗口中编辑StringCollection。
模版代码如下:
1
<%
@ CodeTemplate Language
=
"
C#
"
TargetLanguage
=
"
C#
"
%>
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
<%
@ Assembly Name
=
"
CodeSmith.CustomProperties
"
%>
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
<%
@ Property Name
=
"
List
"
Type
=
"
CodeSmith.CustomProperties.StringCollection
"
Category
=
"
Custom
"
Description
=
"
This is a sample StringCollection
"
%>
6
![None.gif](/Images/OutliningIndicators/None.gif)
7
using
System;
8
namespace
Test
9
![None.gif](/Images/OutliningIndicators/None.gif)
10
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
11![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
12![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
13
/// 测试StringCollection
14![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
15
/// </summary>
16![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
17
public class Test
18![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
19![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
20![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
21
public static void Main(string[] args)
22![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
23![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
24![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
25![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
<%for(int i = 0;i<List.Count;i++)
{%>
26![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
27
Console.WriteLine(<%=List[i]%>);
28![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
29
<%}%>
30![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
31
}
32![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
33
}
34![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
35
}
36
![None.gif](/Images/OutliningIndicators/None.gif)
37
生成后的代码:
1
using
System;
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
namespace
Test
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
6![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
7![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
8
/// 测试StringCollection
9![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
10
/// </summary>
11![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
12
public class Test
13![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
14![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
15![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
16
public static void Main(string[] args)
17![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
18![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
19![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
20
Console.WriteLine(Apples);
21![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
22
Console.WriteLine(Fish);
23![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
24
}
25![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
26
}
27![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
28
}
29
StringCollection
的重要属性和方法:
公共属性
名称 | 描述 |
Count | 获取StringCollection中包含的字符串的数目 |
IsReadOnly | 获取用于指示StringCollection是否为只读的值 |
IsSynchronized | 获取一个值,该值指示对StringCollection 的访问是否为同步的(线程安全的) |
Item | 获取或设置指定索引处的元素。在C# 中,该属性为 StringCollection 类的索引器 |
SyncRoot | 获取可用于同步对StringCollection 的访问的对象 |
公共方法
名称 | 描述 |
Add | 将字符串添加到 StringCollection 的末尾 |
AddRange | 将字符串数组的元素复制到 StringCollection 的末尾 |
Clear | 移除 StringCollection 中的所有字符串 |
Contains | 确定指定的字符串是否在 StringCollection 中 |
CopyTo | 从目标数组的指定索引处开始,将全部 StringCollection 值复制到一维字符串数组中 |
IndexOf | 搜索指定的字符串并返回 StringCollection 内的第一个匹配项的从零开始的索引 |
Insert | 将字符串插入 StringCollection 中的指定索引处 |
Remove | 从 StringCollection 中移除特定字符串的第一个匹配项 |
RemoveAt | 移除 StringCollection 的指定索引处的字符串 |