流fluentインターフェイスのIdictionary addand Return拡張機能
-
28-10-2019 - |
質問
なんていい 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");
だから、ここでの質問については、私がここで正しい道をたどっているのかどうか疑問に思っています。
私が貧しい人の流fluentインターフェイスの実装をしているのですか、それともまったく関係のないものですか?
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にはそのような他の多くの例はありません。
所属していません StackOverflow