TimeSheetActivityクラスには、割り当てのコレクションがあります。同じAllocation.EventDateためコレクションの検索。 Dictionaryの代替語
public class Allocation : ValueObject
{
public virtual StaffMember StaffMember { get; private set; }
public virtual TimeSheetActivity Activity { get; private set; }
public virtual DateTime EventDate { get ... }
public virtual TimeQuantity TimeSpent { get ... }
}
重複割り当てが許可されていません:割り当ては、このような何かを探しているだけでなく、ドメイン内の他のオブジェクトによって使用されている値オブジェクトです。したがって、クライアントがアクティビティへの割り当てを試みると、同じAllocation.EventDateのためのコレクションに既に割り当てがあるかどうかを確認するためのチェックが行われます。そうでない場合、新しい割り当てがコレクションに追加されますが、既存の割り当てが新しいものに置き換えられます。
私は現在、Allocation.EventDateをキーとしてコレクションを管理するために辞書を使用しています。それはドメインでうまく動作しますが、キーが既に値の一部であるという事実自体が「悪臭」ではないかと思います。
また、辞書の値以外のものを保持する理由もありません。私はNHibernateを使用しているので、私はそれを行ういくつかのカスタムタイプを書く必要があるかもしれません、そして、それはまた別のタイプのコレクションを使用する必要があるという手掛かりですか? (これもAllocationクラスの仮想プロパティの理由です)。
私が考えている主な代替案は、専用のEqualityComparerを持つHashSetです。
あなたはどう思いますか?
乾杯、 Berryl
これは非常に古い質問です。しかし、なぜ誰もリンクされたリストを提案しなかったのだろうか。なぜなら、これは辞書が内部的に矛盾するハッシュのために使うものなのだから。 'Dictionary'が重複するキーを持つことができない唯一の理由は、あなたが見たときに何を返すべきかを知らないためです。 (Btw。構造体を構造体にして、パフォーマンスを大幅に節約してください) –
Aidiakapi