CodeSmith实用技巧(一):使用StringCollection

本文介绍了如何在CodeSmith中使用StringCollection类来管理字符串集合。详细解释了如何添加引用、定义属性,并提供了完整的模板代码示例及生成代码示例。同时列举了StringCollection的重要属性和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

StringCollection提供了一种集合的输入方式,在代码中,可以用Array的方式来引用。在使用这个类之前,在模版中我们必须添加对CodeSmith.CustomProperties程序集的引用:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

None.gif<%@ Assembly Name="CodeSmith.CustomProperties" %>

添加完程序集之后,我们就可以使用StringCollection在脚本块中定义一个属性:

None.gif<%@ 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

单击按钮,将会弹出一个String Collection Editor对话框:

PIC052.JPG

当然也可以直接在属性窗口中编辑StringCollection

模版代码如下:

 1None.gif<%@ CodeTemplate Language="C#" TargetLanguage="C#" %>
 2None.gif
 3None.gif<%@ Assembly Name="CodeSmith.CustomProperties" %>
 4None.gif
 5None.gif<%@ Property Name="List" Type="CodeSmith.CustomProperties.StringCollection" Category="Custom" Description="This is a sample StringCollection" %>
 6None.gif
 7None.gifusing System;
 8None.gifnamespace Test
 9None.gif
10ExpandedBlockStart.gifContractedBlock.gifdot.gif{       
11ExpandedSubBlockStart.gifContractedSubBlock.gif         /**//// <summary>
12InBlock.gif
13InBlock.gif         ///     测试StringCollection
14InBlock.gif
15ExpandedSubBlockEnd.gif         /// </summary>

16InBlock.gif
17InBlock.gif         public class Test
18InBlock.gif
19ExpandedSubBlockStart.gifContractedSubBlock.gif         dot.gif{
20InBlock.gif
21InBlock.gif                   public static void Main(string[] args)
22InBlock.gif
23ExpandedSubBlockStart.gifContractedSubBlock.gif                   dot.gif{
24InBlock.gif
25ExpandedSubBlockStart.gifContractedSubBlock.gif                            <%for(int i = 0;i<List.Count;i++)dot.gif{%>
26InBlock.gif
27InBlock.gif                            Console.WriteLine(<%=List[i]%>);
28InBlock.gif
29ExpandedSubBlockEnd.gif                            <%}
%>
30InBlock.gif
31ExpandedSubBlockEnd.gif                   }

32InBlock.gif
33ExpandedSubBlockEnd.gif         }

34InBlock.gif
35ExpandedBlockEnd.gif}

36None.gif
37None.gif

生成后的代码:

 1None.gifusing System;
 2None.gif
 3None.gifnamespace Test
 4None.gif
 5ExpandedBlockStart.gifContractedBlock.gifdot.gif{       
 6ExpandedSubBlockStart.gifContractedSubBlock.gif         /**//// <summary>
 7InBlock.gif
 8InBlock.gif         ///     测试StringCollection
 9InBlock.gif
10ExpandedSubBlockEnd.gif         /// </summary>

11InBlock.gif
12InBlock.gif         public class Test
13InBlock.gif
14ExpandedSubBlockStart.gifContractedSubBlock.gif         dot.gif{
15InBlock.gif
16InBlock.gif                   public static void Main(string[] args)
17InBlock.gif
18ExpandedSubBlockStart.gifContractedSubBlock.gif                   dot.gif{
19InBlock.gif
20InBlock.gif                            Console.WriteLine(Apples);
21InBlock.gif
22InBlock.gif                            Console.WriteLine(Fish);
23InBlock.gif
24ExpandedSubBlockEnd.gif                   }

25InBlock.gif
26ExpandedSubBlockEnd.gif         }

27InBlock.gif
28ExpandedBlockEnd.gif}

29None.gif
  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 的指定索引处的字符串

 

转载于:https://www.cnblogs.com/wayne-ivan/archive/2007/06/15/784398.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值