これは、別の質問に対するこの回答が動機です。
ビルダーパターン)、特に、オプションの初期化パラメータとの複合体の初期化を簡略化するために使用されます。しかし、相互に排他的な構成を適切に管理する方法がわかりません。
ここにImageクラスがあります。  Imageファイルまたはサイズから初期化できますが、両方から初期化することはできません。コンストラクタを使用してこの相互排除を強制することは、クラスが十分に単純な場合に明らかです。
public class Image
{
    public Image(Size size, Thing stuff, int range)
    {
    // ... initialize empty with size
    }
    public Image(string filename, Thing stuff, int range)
    {
        // ... initialize from file
    }
}
Imageビルダーパターンが役立つように実際に十分に構成可能であると想定すると、突然これが可能になる可能性があります。
Image image = new ImageBuilder()
                  .setStuff(stuff)
                  .setRange(range)
                  .setSize(size)           // <----------  NOT
                  .setFilename(filename)   // <----------  COMPATIBLE
                  .build();
これらの問題は、コンパイル時ではなく実行時に検出する必要がありますが、これは最悪の事態ではありません。問題は、ImageBuilderクラス内でこれらの問題を一貫して包括的に検出すると、特にメンテナンスに関して複雑になる可能性があることです。
ビルダーパターンで互換性のない構成に対処するにはどうすればよいですか?