オブジェクトの設定が非常に複雑で、途中で選択するたびに利用可能なオプションが制限または拡張されます。例外をスローしたり、オブジェクトの無効なインスタンスを作成したりするのは嫌いです。そのため、以前のメソッド入力パラメーターに基づいてインスタンスを構築するときに、オプション (呼び出し可能なメソッド) を制限したいと考えています。たとえば、ユーザーがタイプ「A」の場合はロールに追加できるというルールがある場合、それ以外の場合はタイプ「B」の場合は場所を尋ね、場所が特定の郵便番号の場合...取得しますアイデア
これは、匿名のメソッド、タイプなどで可能ですか
ユーザータイプA
UserBuilder builder = new UserBuilder
builer.Build().ForType("A").WithRoles(rolesList);
ユーザータイプB
UserBuilder builder = new UserBuilder
builer.Build().ForType("B").WithLocations(locationList);
更新: 基本的に私の質問は、オブジェクトの状態に基づく有効なものを除いて、API からの他のすべてのパブリック メソッド オプションを制限する方法はありますか?