动态创建具有通用属性的对象

快乐

我想在运行时实例化从同一父级继承的两个类之一。

这是父类。它具有两个孩子共有的所有属性。

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%相同。有办法吗?

帕特里克·霍夫曼

你在做什么就可以了。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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章