tug*_*erk 2 c# dictionary fluent-interface idictionary
什么好看的JQuery这是一个伟大的JavaScript库是为了能够得到你的工作作为返回值的元素.这是我所指的一个例子:
$(function() {
$("#poo").css("clear", "both").css("margin", "10px");
});
Run Code Online (Sandbox Code Playgroud)
我想在这里尝试实现的内容与上面的C#代码完全相同IDictionary
interface
.我的意图是能够正确编码如下:
IDictionary<string, string> myDictionary =
new Dictionary<string, string>().
Add("key1", "value1").
Add("key2", "value2").
Add("key3", "value3");
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个扩展方法,如下所示IDictionary
:
public static IDictionary<string, string> AddAndReturn(this IDictionary<string, string> dictionary, string key, string value) {
dictionary.Add(key, value);
return dictionary;
}
Run Code Online (Sandbox Code Playgroud)
现在我可以像以下一样使用它:
IDictionary<string, string> poo =
new Dictionary<string,string>().
AddAndReturn("key1", "value1").
AddAndReturn("key2", "value2").
AddAndReturn("key3", "value3");
Run Code Online (Sandbox Code Playgroud)
所以,至于这里的问题,我想知道的是我是否在这里遵循正确的道路.
我正在做一个穷人流畅的界面实现还是完全无关?
在C#中是否有任何已知的此实现案例?
虽然您的实现模式是正确的(并且是常见的),但您的用例可能不是最佳选择.Object Collection初始化程序也适用于字典类型:
var poo = new Dictionary<string,string> {
{ "key1", "value1" },
{ "key2", "value2" },
{ "key3", "value3" }, // this is permissible
};
Run Code Online (Sandbox Code Playgroud)
编译器神奇地将其转换为Add(字符串,字符串)调用.顺便说一句,最后一对之后显然是错误的逗号是故意的.编译器允许这样做,因此您可以简化代码生成器(如T4)中的逻辑.