我需要一个具有继承的构造函数吗?

Ref*_*din 3 .net c# oop inheritance

我有以下类(POCO的?),其中第二个应该扩展第一个.

我猜我需要一个引用基本实例的属性,在这种情况下是Business,但是我还需要一个构造函数来"填充"该属性,因为保险公司在没有业务的情况下不能存在吗?

我对此的参考是底层数据库,其中tblInsuranceCompany对列的FK约束BusinessIDtblBusiness.

另外,我在OOP上很新,所以请指出你可能看到"错误"的任何其他内容.谢谢,

public class Business
{
    public int BusinessID { get; set; }

    public BusinessType BusinessType { get; set; }

    public string Name { get; set; }

    public string ContactName { get; set; }

    public string EmailAddress { get; set; }

    public DateTime? InactiveDate { get; set; }

    public IList<Address> Addresses { get; set; }

    public IList<Phone> Phones { get; set; }

    public string DisplayString { get { return this.ToString(); } }

    public override string ToString()
    {
        return String.Format("{0}: {1}", Name, BusinessType.TypeDescription);
    }
}

public class InsuranceCompany : Business
{
    public int InsuranceCompanyID { get; set; }

    public Business Business { get; set; }

    public InsuranceCompanyType InsuranceCompanyType { get; set; }

    public string DRIInsuranceCompanyNumber { get; set; }

    public string DisplayString { get { return this.ToString(); } }

    public override string ToString()
    {
        return String.Format("{0}: {1}", Business.Name, InsuranceCompanyType.TypeDescription);
    }
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 5

我猜我需要一个引用基本实例的属性,在这种情况下是Business,

不,你不需要这个.保险公司业务.它还具有Business继承自的所有属性Business.您不需要属性来引用它,因为对InsuranceCompany对象的引用将与对"business"部分的引用相同(它们是同一个对象).

但是,我还需要一个构造函数来"填充"该属性,因为保险公司在没有业务的情况下不能存在吗?

所有类都获得构造函数 - 当您构建InsuranceCompany时,它也将有效地构建"业务".

话虽这么说,您可能需要一个将相关信息传递给基类构造函数的构造函数 - 但如果您不提供一个,编译器将为您创建一个默认构造函数.