Я работаю над библиотекой классов, использующей С#. Я разработал 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 для возможности разрешить изменение и тестирование этого кода независимо. Кроме того, я чувствую, что каждый раздел меньше и проще.
Любые советы, которые могут быть предоставлены, будут высоко оценены.
Обновление: блок кода был обновлен, чтобы предоставить более подробную информацию о коде.