我想知道最好的验证方法是什么。
如果我有一个由基元、关联和其他自定义对象的集合组成的复杂对象对象,是否应该使用 IsValid() 方法验证子对象以及根对象的所需字段/键?
如果是,这应该在某种抽象类中,还是最好使用接口?对于抽象,我需要将我的子对象接口转换为它们的具体类定义才能使用抽象方法,而对于接口验证,我相信我可以让我的子对象作为接口,因为我称之为他们的验证方法。
另外,我没有使用 MVC,而是使用 Web 表单的 MVP(并尝试使用 DDD 原则)。
谢谢。
更新
我有一个 ScheduledMeeting 的聚合根:
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,因此无法实现代码合同等(据我所知)。