我正在开发一个可以创建订阅的应用程序,您可以选择同时属于该类的个人或公司订阅。但是我在覆盖ToString()时遇到了一些麻烦。是否可以使用某种if语句来说明对象是否创建为单个订阅返回为个人格式化的字符串,否则返回公司的字符串。这是我的代码,使其更清晰:
public class Subscription: ObservingClass
{
private IndividualApplicant _individualApplicant;
private CompanyApplicant _companyApplicant;
private SubsAmount _subsAmount;
public IndividualApplicant IndividualApplicant
{
get { return _individualApplicant; }
set
{
_individualApplicant = value;
OnPropertyChanged();
}
}
public CompanyApplicant CompanyApplicant
{
get { return _companyApplicant; }
set
{
_companyApplicant = value;
OnPropertyChanged();
}
}
public SubsAmount SubsAmount
{
get { return _subsAmount; }
set
{
_subsAmount = value;
OnPropertyChanged();
}
}
public Subscription()
{
IndividualApplicant = new IndividualApplicant();
CompanyApplicant = new CompanyApplicant();
}
public override string ToString()
{
return "Subscription Amount: " + SubsAmount + "\n" + IndividualApplicant.ToString();
}
}
答案 0 :(得分:2)
你的问题比这更糟糕。
可以选择个人或公司订阅,这两个类都是。
这表明了inhertance - 2个类(IndividualSubscription,CompanySubscription) - 然后......问题出在哪里?都会根据需要覆盖Tostring。
但你的班级模型非常糟糕。
public CompanyApplicant CompanyApplicant { get {return _companyApplicant; } 组 { _companyApplicant = value; OnPropertyChanged(); } }
WTF?这应该是申请人 - 当插入IndivdualApplicant时,CompanySubscription可能会抛出ArgumentExcveption,但是根据子类型,它对于它们具有不同的属性完全没有意义并完全卷入所有逻辑。
答案 1 :(得分:1)
创建订阅,您可以 选择两者兼有的个人或公司订阅 类
然后你的Subscription
课应该是这样的..
public class Subscription : ObservingClass
{
private Applicant _applicant;
public Applicant Applicant
{
get
{
return _applicant;
}
set
{
_applicant = value;
OnPropertyChanged();
}
}
public Subscription(Applicant applicant)
{
Applicant = applicant;
}
public override string ToString()
{
return "Subscription Amount: " + SubsAmount + "\n" + Applicant.ToString();
}
private SubsAmount _subsAmount
public SubsAmount SubsAmount
{
get { return _subsAmount; }
set
{
_subsAmount = value;
OnPropertyChanged();
}
}
}
有了这个,Subscription
只知道它有一个Applicant
abstract
类(如果你愿意,可以将其设为interface
)
现在,IndividualApplicant
和CompanyApplicant
应该继承Applicant
。
从那里,覆盖ToString
和IndividualApplicant
CompanyApplicant