博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中扩展StringBuilder支持链式方法
阅读量:4881 次
发布时间:2019-06-11

本文共 4638 字,大约阅读时间需要 15 分钟。

 

本篇体验扩展StringBuilder使之支持链式方法。

这里有一个根据键值集合生成select元素的方法。

 

private static string BuilderSelectBox(IDictionary
options, string id, bool includeUnknown){ var html = new StringBuilder(); html.AppendFormat("
"); 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
options, string id, bool includeUnknown){ var html = new StringBuilder() .AppendFormattedLine("
"); return html.ToString();}

 

以上,

    if(includeUnknown)
    {
        html.AppendLine("\t<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
predicate, string value) => predicate() ? @this.AppendLine(value) : @this; }private static string BuilderSelectBox(IDictionary
options, string id, bool includeUnknown){ var html = new StringBuilder() .AppendFormattedLine("
"); return html.ToString();}

 

 

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
predicate, string value) => predicate() ? @this.AppendLine(value) : @this; public static StringBuilder AppendWhen(this StringBuilder @this, Func
predicate, Func
fn) => predicate() ? fn(@this) : @this; }private static string BuilderSelectBox(IDictionary
options, string id, bool includeUnknown){ var html = new StringBuilder() .AppendFormattedLine("
"); return html.ToString();}

 

以上,

    foreach(var opt in options)
    {
        html.AppendFormattedLine("\t<option value=\"{0}\">{1}</option>", opt.Key, opt.Value);
    }
    
对遍历语句进行封装,扩展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
predicate, string value) => predicate() ? @this.AppendLine(value) : @this; public static StringBuilder AppendWhen(this StringBuilder @this, Func
predicate, Func
fn) => predicate() ? fn(@this) : @this; public static StringBuilder AppendSequence
(this StringBuilder @this, IEnumerable
seq, Func
fn) => seq.Aggregate(@this, fn); }private static string BuilderSelectBox(IDictionary
options, string id, bool includeUnknown){ var html = new StringBuilder() .AppendFormattedLine("
") .ToString();}

 

转载于:https://www.cnblogs.com/darrenji/p/5271696.html

你可能感兴趣的文章
mysql 线程池
查看>>
微信公众号网页授权获取用户基本信息
查看>>
URL
查看>>
排序算法-冒泡排序
查看>>
菜单栏始终浮动在顶部 js
查看>>
json序列化后的是字符串,不是二进制。是字符串!!!确定不是二进制!!!...
查看>>
python 快速排序
查看>>
JMeter【第四篇】参数化
查看>>
EasyUI设置复选框单选操作
查看>>
ios推送(友盟推送,百度推送,极光推送)
查看>>
[翻译]在 .NET Core 中的并发编程
查看>>
【less和sass的区别,你了解多少?】
查看>>
在Flash Builder中使用条件编译
查看>>
Slider Revolution实现幻灯片
查看>>
php 字符串的拼接
查看>>
python 横向比较最大值 贴标签
查看>>
NYOJ--703
查看>>
SqlServer 获取表主键的方法
查看>>
Redis和Memcache对比及选择
查看>>
Spark:大数据的电花火石!
查看>>