字典AddAndReturn扩展流畅接口
本文关键字:接口 扩展 AddAndReturn 字典 | 更新日期: 2023-09-27 18:08:06
jQuery是一个很棒的JavaScript库,它的优点是能够将正在处理的元素作为返回值。下面是我所指的一个例子:
$(function() {
$("#poo").css("clear", "both").css("margin", "10px");
});
我想为c# IDictionary
interface
实现相同的功能,以便我可以编写如下代码:
IDictionary<string, string> myDictionary =
new Dictionary<string, string>().
Add("key1", "value1").
Add("key2", "value2").
Add("key3", "value3");
所以我为IDictionary
创建了如下扩展方法:
public static IDictionary<string, string> AddAndReturn(this IDictionary<string, string> dictionary, string key, string value) {
dictionary.Add(key, value);
return dictionary;
}
现在我可以这样使用它了:
IDictionary<string, string> poo =
new Dictionary<string,string>().
AddAndReturn("key1", "value1").
AddAndReturn("key2", "value2").
AddAndReturn("key3", "value3");
我想知道我是否走对了路。
我所做的是一个穷人的流畅的接口实现或完全无关?
在c#中有任何已知的实现案例吗?
虽然您的实现模式是正确的(并且是常见的),但您的用例可能不是最佳选择。对象集合初始化器也适用于字典类型:
var poo = new Dictionary<string,string> {
{ "key1", "value1" },
{ "key2", "value2" },
{ "key3", "value3" }, // this is permissible
};
编译器神奇地将其转换为Add(string, string)调用。顺便说一句,最后一对后面明显错误的逗号是故意的。编译器允许这样做,因此您可以简化代码生成器(如T4)中的逻辑。
在c#中有任何已知的实现案例吗?
关于这一点,我想补充的是,StringBuilder.Append()
方法返回StringBuilder
,使方法可链接,例如:
sb.Append("a").Append("b"). Append("c")
但是在。net中这样的例子并不多。