Я работаю над библиотекой классов, используя C #. Я разработал 3 основных класса, чтобы помочь моделировать наши данные. Они разработаны так, что класс A содержит список экземпляров класса B, а класс B содержит ссылку на экземпляр класса C, то есть:
public class Policy
{
public List < PolicyTerm > myTerms;
person Customer;
string PolicyNumber;
}
public class PolicyTerm
{
public Billing myBill;
Datetime effectivedate;
List < Activities > termActivities;
public doAction()
{
use value from Policy, like PolicyNumber;
}
}
public class Billing
{
float remainingBalance;
Datetime nextDueDate;
public void doSomething()
{
reference value from PolicyTerm, such as effective date;
use value from Policy, such as PolicyNumber;
}
}
Проблема у меня возникает, когда я пытаюсь использовать метод в PolicyTerm или Billing, которому нужны данные из содержащего класса. В приведенном выше примере это будет метод «doSomething», пытающийся использовать значение из PolicyTerm, например, дату вступления в силу термина при запросе или сохранении данных в нашей базе данных.
Мне интересно, есть ли у меня правильный дизайн для моих классов из-за этого сценария. Должен ли я просто добавить ссылку на «родительский» класс в дочерних классах, чтобы сделать доступными данные родителя? Или мне нужно переосмыслить общую структуру и дизайн кода?
Мне кажется, что дизайн класса хорошо работает для моделирования данных и наших бизнес-правил, но он создает некоторые ограничения, подобные описанной выше ситуации. Мне понравилось разделение PolicyTerm и Billing за возможность разрешать этот код для изменения и тестирования независимо. Кроме того, я чувствую, что каждый раздел становится меньше и проще.
Любой совет, который может быть предоставлен, будет высоко оценен.
Обновление: блок кода был обновлен, чтобы предоставить более подробную информацию о рассматриваемом коде.