动态创建具有公共属性的对象
本文关键字:属性 对象 创建 动态 | 更新日期: 2023-09-27 18:11:33
我想在运行时实例化从同一父类继承的两个类中的一个。
是父类。它具有两个子元素共有的所有属性。
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%的属性对于两个类都是相同的。我能做到吗?
你所做的是好的。只需使用基类并稍微调整一下:
//
// 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;
}