進行中のプロジェクトがあり、クラスの一意のインスタンスを 1 つ作成したいと考えています。
タイプ「OfferStatus」のプロパティを持つ「JobOffer」クラスがあります(これは抽象的で、状態パターンを実装しています)。'StateAvailable' と 'StateUnavailable' (または必要に応じて 'open' と 'closed') があります。「JobOffer」オブジェクトはデータベースに保存する必要があります。
「StateAvailable」と「StateUnavailable」を 1 つだけにしたいので、新しい JobOffer を作成するときに「StateAvailable」または「StateUnavailable」を参照し、Open (利用可能) であるすべての jobOffers を一覧表示できます。閉鎖されているすべて(利用不可)。
シード メソッドの db に状態を追加することでこれを行うことができ、新しい状態をインスタンス化することはありません。しかし、誰か(コントローラー、モデルなど)がそのクラスの新しいインスタンスを作成できることを回避するために、シングルトンまたは何かを実行できるかどうか疑問に思っていました。
public class JobOffer {
public int JobOfferId {get;set;}
public OfferState State {get;set;
public virtual ICollection<Person> People {get;set;}
//And some methods here, which depends on the state
//ie, this.State.myMethod();