C# 类继承

标签 c# .net generics inheritance

我在保险行业工作,有两种不同的保单类型 - 机动车和家庭,分别代表两个不同的类别:机动车和家庭。

两者都有一些共同的数据位,因此它们都继承自另一个名为 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/

相关文章:

c# - 如何使 T 类型的字段成为 volatile 的?

c# - 带有字符串参数的构造函数的通用约束?

c# - Exchange 2010 + Powershell 和 C# 从当前用户获取 PSCredential 时出现问题

c# - 为什么编译器不在 C# 中将 var[] 转换为 object[]?

c# - 在 asp.net 中,未触发更新面板内的按钮

c# - 如何在 .NET 中获取 xml 元素的流位置

c# - Win32Api USB SetupDiGetDeviceInterfaceDetail 失败

c# - 从网络下载之前获取图像文件的大小

.net - 您如何确定系统上运行的 .NET 版本是什么?

Java 泛型方法无法按预期工作