電話番号通知のモデルがあります (ユーザーは、自分のアカウントに関連付けられた電話番号を介して緊急事態の通知を受け取り、これらが呼び出される順序を設定できます)。ほとんどの場合、モデルの電話番号部分は必須ですが、強制したくない新しいユーザーの作成中の特別なケースがあります。
上記の UserPhoneNotificationModel から継承する非常に単純な子オブジェクト UserCreationPhoneNotificationModel を作成しました。他にも小さな変更がいくつかありますが、ここで関連するのは PhoneNumber フィールドをオーバーライドして、必要がなくなったことです。
親モデルでは
[Required]
public virtual string PhoneNumber { get; set; }
子モデルでは、
public override string PhoneNumber { get; set; }
これでうまくいくと思ったのですが、どうやらそうではないようです。問題は RequiredAttribute に Inherited = true があることだと思いましたが、そうではないので、サブクラスに継承されている理由が完全にはわかりません。
念のため再確認しましたが、親のフィールドから必須を削除すると、サブクラスのフィールドも不要になりました。これは間違いなくある種の継承です。