У меня проблема с дизайном в моем приложении. У меня есть класс с полями, имеющими какие-то проверки бизнес-логики. Этот класс создается и заполняется данными двумя способами. 1st: Потребителем класса: данные, отправленные с Front end и заселенные в объект и сохраненные в базе данных. 2nd: извлечение сохраненных данных. Во втором требовании у меня есть проблема. Я не хочу проверять данные, так как, возможно, сохраненные данные могут не соответствовать бизнес-логике из-за удаления или изменения существующих данных. Поэтому мне нужно заполнить объект сохраненными данными без проверки.Лучший способ реализовать проверку в классе?
так любезно предложите мне лучший способ добавить логику проверки в класс, так что, когда он используется для сохранения данных, он должен быть проверен, а при извлечении данных он не должен проверять какое-либо из полей, если существует ключевое поле в таблице базы данных. Например:
class customer
{
private string customerCode;
private string customerName;
private List<Project> projectList;
//These property contains validation logic for data assigned to them.
public string CustomerCode{get; set;}
public string CustomerName{get; set;}
public List<Project> projectList{get;set;};
public bool SetData(ref string message)
{
//Fetch From Database and set it to fields.
//Here to avoid validation I can use fields directly to skip validation.
this.CustomerCode = DataTable[CustomerCode];
this.CustomerName = DataTable[CustomerName];
//But here its not possbible to skip validation in Project class
foreach(projectID in DataTable[Projects])
{
//**Problem Area**.... every project I add is validated according to business logic, but it may be possible that even after completion of a project users of the system want to list all the projects of that customer.
this.ProjectList.Add(new Project(projectID));
}
}
}
Прочитайте о блоке приложения для проверки: https://msdn.microsoft.com/en-us/library/ff648831.aspx – Samuel
Thanx, но содержимое устарело, я просто не хочу включать какую-либо инфраструктуру, а не хочу для решения этой проблемы в моем дизайне –
Это звучит так, будто вы не отделяете свои проблемы достаточно. У вас есть один объект, который гидратируется из вызова базы данных, поэтому он должен быть создан с помощью конструктора с вашими параметрами. Другая ситуация - это то, где вы могли бы частично увлажнить данные, поступающие от пользователя. Использование одного и того же типа для обеих ситуаций не кажется идеальным. – Tejs