我想在运行时实例化两个继承自同一父类的类。
这是父类。它具有两个孩子共有的所有属性。
public class Applicant
{
public int ApplicantID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
//etc
}
从它继承的两个类具有使它们不同的属性
public class PilotApplicant : Applicant
{
public byte[] SSN { get; set; }
public string EthnicExplain { get; set; }
public byte[] CryptoKey { get; set; }
public byte[] CryptoIV { get; set; }
}
public class CMSApplicant : Applicant
{
public string LocationName { get; set; }
}
这是我想做的事情,或类似的事情:
switch (Host)
{
case "pilot":
currentApplicant = new PilotApplicant();
break;
case "cms":
currentApplicant = new CMSApplicant();
break;
}
currentApplicant.ApplicantID = Convert.ToInt32(oReader["ApplicantID"]);
currentApplicant.FirstName = oReader["FirstName"].ToString();
currentApplicant.LastName = oReader["LastName"].ToString();
currentApplicant.MiddleName = oReader["MiddleName"].ToString();
基本上我试图避免为类单独设置所有属性,因为它们中的99%对于这两个类都是相同的。有没有办法可以做到这一点?
答案 0 :(得分:3)
你在做什么是好的。 Juse使用基类并稍微调整一下:
//
// Use base class here
//
Applicant currentApplicant;
switch (Host)
{
case "pilot":
currentApplicant = new PilotApplicant();
// set values for pilot
break;
case "cms":
CMSApplicant cmsApplicant = new CMSApplicant();
currentApplicant = cmsApplicant;
cmsApplicant.LocationName = (string)oReader["LocationName"];
break;
default:
currentApplicant = null;
break;
}