C#中扩展StringBuilder支持链式方法
作者:网络转载 发布时间:[ 2016/3/14 11:00:35 ] 推荐标签:测试开发技术 .NET
本篇体验扩展StringBuilder使之支持链式方法。
这里有一个根据键值集合生成select元素的方法。
private static string BuilderSelectBox(IDictionary<int, string> options, string id, bool includeUnknown)
{
var html = new StringBuilder();
html.AppendFormat("<select id="{0}" name="{0}">", id);
html.AppendLine();
if(includeUnknown)
{
html.AppendLine(" <option>Unknown</option>");
}
foreach(var opt in options)
{
html.AppendFormat(" <option value="{0}">{1}</option>", opt.Key, opt.Value);
html.AppendLine();
}
html.AppendLine("</select>");
return html.ToString();
}
以上,
html.AppendFormat("<select id="{0}" name="{0}">", id);
html.AppendLine();
可以对这两个语句封装,扩展StringBuilder。
改成
public static class StringBuilderExtensions
{
public static StringBuilder AppendFormattedLine(this StringBuilder @this, string format, prams object[] args) => @this.AppendFormat(format, args).AppendLine();
}
private static string BuilderSelectBox(IDictionary<int, string> options, string id, bool includeUnknown)
{
var html = new StringBuilder()
.AppendFormattedLine("<select id="{0}" name="{0}">", id);
if(includeUnknown)
{
html.AppendLine(" <option>Unknown</option>");
}
foreach(var opt in options)
{
html.AppendFormattedLine(" <option value="{0}">{1}</option>", opt.Key, opt.Value);
html.AppendLine();
}
html.AppendLine("</select>");
return html.ToString();
}
以上,
if(includeUnknown)
{
html.AppendLine(" <option>Unknown</option>");
}
可以对如上语句进行封装,继续扩展StringBuilder.
public static class StringBuilderExtensions
{
public static StringBuilder AppendFormattedLine(this StringBuilder @this, string format, prams object[] args) => @this.AppendFormat(format, args).AppendLine();
public static StringBuilder AppendLineWhen(this StringBuilder @this, Func<bool> predicate, string value) =>
predicate()
? @this.AppendLine(value)
: @this;
}
private static string BuilderSelectBox(IDictionary<int, string> options, string id, bool includeUnknown)
{
var html = new StringBuilder()
.AppendFormattedLine("<select id="{0}" name="{0}">", id)
.AppendLineWhen(() => includeUnknown, " <option>Unknown</option>");
foreach(var opt in options)
{
html.AppendFormattedLine(" <option value="{0}">{1}</option>", opt.Key, opt.Value);
}
html.AppendLine("</select>");
return html.ToString();
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11