我有一个名为PaymentPlan的容器类,它包含基本的付款摘要信息。它还包含ExpectedPayments列表。希望是一个相当基本的OOP类型问题,我的大脑似乎已经入睡 - 我在ExpectedPayment类中有一个属性需要询问PaymentPlan类的属性以确定结果。
我目前正在将对PaymentPlan的引用存储为ExpectedPayment类的属性,但是,它有一个公共getter,并且在DDD之后,我觉得这有点代码味道。有没有更好的方法来实现我想要的目标?
我删除了除必要位之外的所有内容作为示例:
public class PaymentPlan
{
private readonly List<ExpectedPayment> _payments;
public PaymentPlan(List<ExpectedPayment> payments)
{
... Other Stuff
//TODO: Fix this smell
_payments = payments;
_payments.ForEach(p => p.Plan = this);
}
... Other Properties
}
和ExpectedPayment类:
public class ExpectedPayment
{
public ExpectedPayment(... Args removed for example)
{
}
//TODO: Attempting to avoid this public setter as I have no control..
public PaymentPlan Plan { get; set; }
public PaymentState PaymentState
{
get
{
if (Plan.SomePropertyOnPlan == "SomeValue")
{
return PaymentState.SomeState;
}
else
{
... Other logic to determine the payment state of this expected payment.
}
}
}
... Other Properties
}
任何帮助表示赞赏! - 如果可能的话,我想知道一些技巧,因为知道有多种方法可以实现我的目标。
谢谢, 亚历克斯
答案 0 :(得分:0)
如果ExpectedPayment
没有任何PaymentPlan
,就好像ExpectedPayment()
不存在一样,您必须强制PaymentPlan
构造函数向调用方提供ExpectedPlan
添加一个友好的&#34;在PaymentPlan
上添加新public class ExpectedPayment
{
public ExpectedPayment(PaymentPlan plan, ..... other args)
{
Plan = plan ;
plan.AddExpectedPlan(this) ;
......
}
......
的方法。
public class PaymentPlan
{
.........
internal void AddExpectedPlan(ExpectedPlan expectedPlan)
{
...........
_payments.Add(expectedPlan) ;
}
}
...
{{1}}