この単純なクラスがあるとします
public class MyEntity
{
public DateTime DateUpdated { get; private set; }
public string Author { get; private set; }
public string Comment { get; private set; }
public void AddComment(string comment, string author)
{
Author = author;
Comment = comment;
DateUpdated = DateTime.Now;
}
}
セッターをプライベートにしてクラスをカプセル化し、AddComment メソッドを追加してクラスにいくつかの動作を追加しました。これは、新しいオブジェクトを作成するときに完全に正常に機能しますが、データベースからエンティティをロードする場合、DateUpdated はもちろん避けたい現在の日付に設定されます。
DateUpdated セッターを公開しないようにするために使用できるパターンはありますか? クラスはもちろん、より一般的な問題の単なる例です。
より多くのパブリック コンストラクターを作成せずに、私が今得た最も近いものは、パブリック 静的メソッドを介してアクセスするプライベート コンストラクターを作成することです。