流暢なインターフェイスの基本的な機能の 1 つは、従来は として宣言されていたメソッドが、void代わりに使用可能なもの、ほとんどの場合、それらが属するクラスのインスタンス (つまりthis) を返すことです。StringBuilder はこの規則の例であり、それ自体は完全に流暢ではありませんが、チェーンされたメソッド呼び出しの利便性を提供します。
sb.Append("Foo")
.Append("Bar")
.AppendLine();
System.Web.Mvc.TagBuilderただし、この規則には従いません。メソッドはすべてvoidです。
これを整理する手っ取り早い汚い方法は、プライベート TagBuilder( _instance) をFluentTagBuilderクラスにカプセル化し、同じメソッドをすべて実装して、作業をインスタンスに委譲し、this代わりに返すことですvoid。
これを達成するための、それほど迅速で汚い方法ではない最良の方法は何ですか? メソッドは戻り値の型によってのみ異なるため、継承は明らかに機能しません。私はそれをシンプルに保ち、可能であればモック/代用フレームワークを使用したくありません。共有できる知恵をありがとう!