我在保险行业工作,有两种不同的保单类型 - 机动车和家庭,分别代表两个不同的类别:机动车和家庭。
两者都有一些共同的数据位,因此它们都继承自另一个名为 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/