我正在从事保险业务,有两种不同的保单类型-机动车和家庭保险,由两种不同的类别代表,即机动车和家庭保险。
两者都有一些共同的数据,因此它们都将从另一个称为Policy的类继承。当用户登录应用程序时,他们可能拥有汽车或家庭政策,因此应用程序需要显示通用信息以及汽车或家庭独有的信息。为了封装所有这些,我有一个包含 Motor 成员和 Household 成员的响应对象,如下所示:
public class Response
{
...
private MotorPolicy _motorPolicy;
private HouseholdPolicy _householdPolicy;
....
}
下面的代码应该演示:
if (response.PolicyType == Enumerations.PolicyType.Motor)
{
lblDescription.Text = response.MotorPolicy.Description;
lblReg.Text = response.MotorPolicy.Reg;
}
else
{
lblDescription.Text = response.HouseholdPolicy.Description;
lblContents.Text = response.HouseholdPolicy.Contents;
}
MotorPolicy 没有 Contents 属性,HouseholdPolicy 没有 Reg 属性。
但我真的想简单地做:
if (response.PolicyType == Enumerations.PolicyType.Motor)
{
lblDescription.Text = response.Policy.Description;
...
}
我曾尝试使用泛型,但找不到正确的解决方案。
最佳答案
您的响应只需要一个 Policy 类型,然后您可以将 MotorPolicy 或 HouseholdPolicy 类型存储到其中。
然后您的响应只需要检查数据类型
if (response.Policy is MotorPolicy) ....
或者,使用抽象方法或属性从 Policy 类型的抽象方法返回数据,该方法完全由子类实现,并返回适当的 reg 数据或内容数据。
关于C#类继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3864508/