エンティティと集約ルートを比較するときは、Oren Eini: Generic Entity Equalityから借りた ABC を使用します。価値のあるオブジェクトについても、私は同様に独創的でした。Jimmy Bogard の Value Object ABC: Generic Value Object Equalityを使用しました。
私の質問は次のとおりです。これらのABCを継承することを好むべきですか、それとも一般的な等値/比較子を使用して、代わりに前述の動作を構成する必要がありますか? 上記の等式の実装を再利用するつもりです。
これは、System.Object がデフォルトの Equals 実装を持っていることに帰着すると思います。これにより、言語は非常に使いやすくなりますが、興味深い難問も提供されます。Jon Skeet はここで詳しく説明します:比較方法
誰かが長所または短所を考えることができますか?
- ABC を継承する方が簡単で、すぐに使用できる演算子のオーバーロードが提供されます。
- 2 つの抽象クラスをそんなに「ドラッグ」する必要がありますか? 継承グラフがより複雑になり、カップリングが追加されます。
- DI を使用して等値プロバイダーを構成できますか?
要約すると、エンティティのカスタム等価実装を使用した経験がある人はいますか? 私の目的は、実装の選択肢をより完全に理解し、解決策を実装することです。これにより、プロジェクトの寿命が延び (エントロピーが減少し)、保守性が向上します。