アプリケーションのドメイン コアには、Orderオブジェクトがあります。これらのプロパティは勝手に変更するべきではなく、オブジェクトに対してパブリック関数の 1 つを実行するコンテキスト内でのみ変更する必要があるため、プライベート セッターがあります。
public class Order
{
public int Id { get; private set; }
public int MarketplaceId { get; private set; }
public int CustomerId { get; set; }
public OrderStatus Status { get; private set; }
public bool Validate() { //stuff }
public void Fulfill()
{
//messes with order status, etc.
}
}
私はOrderRepository、機能を持つ私のアーキテクチャの外縁にあるデータアクセス用を持っていGetOrderById(int orderId)ます。この関数は、データベースからプルしてOrderオブジェクトを設定します。オブジェクトにデータを入力できるようにする必要がありますが、オブジェクトを使用する他のアプリケーションやサービスがこれらのプロパティを設定するべきではないためOrder、プロパティをパブリックとして公開したくありません。Orderこれをどのように設計してOrder、リポジトリからオブジェクトを取り込みながら、オブジェクトのカプセル化を保持するにはどうすればよいOrderですか?
1 つ以上のコンストラクター (オーバーロード) を介してこれを行うのは面倒なようですが、他に何をすべきかわかりません。