検証を行う最善のアプローチは何なのか疑問に思っています。
他のカスタム オブジェクトのプリミティブ、関連付け、およびコレクションで構成された複雑なオブジェクト オブジェクトがある場合、IsValid() メソッドは子オブジェクトとルート オブジェクトの必須フィールド/キーを検証する必要がありますか?
はいの場合、これはある種の抽象クラスにする必要がありますか、それともインターフェイスを使用するのが最善ですか? 抽象では、抽象メソッドを使用するために子オブジェクト インターフェイスを具象クラス定義にキャストする必要がありますが、インターフェイス検証では、検証メソッドを呼び出すときに子をインターフェイスとして保持できると考えています。
また、私は MVC を使用していませんが、Web フォームで MVP を使用しています (そして DDD の原則を採用しようとしています)。
ありがとう。
アップデート
ScheduledMeeting の Aggregate ルートがあります。
class ScheduledMeeting : BaseValidation
{
ScheduledMeetingID {get;set;}
ITimeSlot TimeSlot {get;set;}
IList<IMeetingAssignee> Assignees{get;set;}
DateTime meetingDate {get;set;}
AssignEmployees(IList<IEmployees> employees){}
}
現在、次のような BaseValidation の抽象クラスが存在します。
public bool isValid(bool validateKeys)
{
if (validateKeys)
{
ValidateRequiredFields();
ValidateKeys();
}
else
{
ValidateRequiredFields();
}
return true;
}
ValidateRequiredFields() と ValidateKeys() は、オブジェクトの実装でオーバーライドされます。
上記を使用して IMeetingAssigned にカスケードする場合は、ScheduledMeeting で ValidateKeys() と ValidateRequiredKeys() の両方をループし、IMeetingAssigned を具体的な MeetingAssigned にキャストしてから、このオブジェクトで ValidateKeys() または ValidateRequiredKeys() を呼び出す必要があります ( BaseValidation も実装するため) など、ずっと下まで続きます。
更新 2
私は .NET 3.5 で立ち往生しているため、コード コントラクトなどを実装できません (私の知る限り)。