一般的に、私は WCF コントラクトで継承を使用することを避け、コンポジションを優先します。
しかし、次の状況では...
- ResultA と ResultB のいずれかになるサービス操作があります。
- この結果を報告するために、応答メッセージにブール値/列挙型があります。
- 応答メッセージには、他にも多くのプロパティがあります。これらのいくつかは ResultA のイベントにのみ関連し、一部は ResultB のイベントにのみ関連します。
私の選択肢は次のとおりです。
- すべてを含む単一の応答メッセージ コントラクトを用意し、プロパティが関連しない場合は null のままにします。次に、クライアントは bool/enum を調べて、その ResultA または ResultB を確認し、それに応じてプロパティを無視する必要があります。
- 2 つの応答メッセージ コントラクトを持ち、両方とも共有ベースから継承します。1 つは ResultA とその関連プロパティを表し、もう 1 つは ResultB とその関連プロパティを表します。
私はいくつかの理由からオプション 2 を好みますが、継承よりも合成の規則に違反しています。
人々はどう思いますか?