根据一个基本字段从基类转换为不同的类

时间:2018-02-07 07:01:16

标签: c# class inheritance casting

我必须实现以下模式:

  1. 基类只包含一个包含该类型的变量。
  2. 程序从只包含单个节点(类型)的文件列表中将XML读入XDocument。其余节点取决于类型。
  3. XDocument被解析为 Chip 对象。
  4. 程序必须检查芯片类型字段并将其转换为相应的 ChipType 对象,以便其他属性和方法可用。
  5. 我使用Interfaces和Inheritance玩了一下,但我无法使我的模式工作。如果您有任何其他更简单的模式来实现类似的东西,请发布它。

    我需要的一个粗略的例子如下。

    public class Chip
    {
        //int variable for simplicity. I can use enum later. 
        public int FamilyType;
    
        public Chip(int Type)
        {
            FamilyType = Type;
        }
    }
    
    public class ChipType1 : Chip 
    {
        /*Properties #1*/
        /*Methods #1*/
        public ChipType1() : base (1)
        {
    
        }
    }
    
    public class ChipType2 : Chip
    {
        /*Properties #2*/
        /*Methods #2*/
        public ChipType2() : base (2)
        {
    
        }
    }
    

2 个答案:

答案 0 :(得分:0)

你的筹码类应该是这样的

app

我希望这可以帮到你。将XML解析为上述类层次结构应该可以正常工作

答案 1 :(得分:0)

对于迟到的回复感到抱歉。我最终使用了一个对象变量。当我需要使用它时,我检查switch子句中的类型并将控制器对象强制转换为相应的类。

public class Chip
{
    //int variable for simplicity. I can use enum later. 
    public int FamilyType;
    public object Controller;

    public Chip(int Type)
    {
        FamilyType = Type;
        if (FamilyType == 1)
          Controller = new ChipType1();
        else if (FamilyType == 2)
          Controller = new ChipType2();
    }
}

public class ChipType1
{
    /*Properties #1*/
    /*Methods #1*/
    public ChipType1() 
    {

    }
}

public class ChipType2  
{
    /*Properties #2*/
    /*Methods #2*/
    public ChipType2()
    {

    }
}