Asp.Net C#Object相关问题

时间:2013-06-26 11:12:59

标签: c# asp.net inheritance

我是Asp .net C#的新手。我对对象和继承有疑问。 如果我有父类(基表)有2个子类(信用卡表,银行帐户表)我很开心。在另一个从基表类中获取对象的类中。 我的问题是我想知道基表是信用卡还是银行账户?!

class BaseTable
{
    string date;
    public string Date
    {
        get { return date; }
        set { date = value; }
    }

    string description;
    public string Description
    {
        get { return description; }
        set { description = value; }
    }

}



class CreditCardTable:BaseTable
{
    string Amount;
    public string amount
    {
        get { return Amount; }
        set { Amount = value; }
    }

    string Type;
    public string type
    {
        get { return Type; }
        set { Type = value; }
    }

}



class BankAccountTable:BaseTable
{
    string Refr;

    public string Ref
    {
        get { return Refr; }
        set { Refr = value; }
    }
    string debit;

    public string Debit
    {
        get { return debit; }
        set { debit = value; }
    }

    string credit;

    public string Credit
    {
        get { return credit; }
        set { credit = value; }
    }

}

1 个答案:

答案 0 :(得分:2)

3个选项:

  1. 使用isasGetType()来明确检查您获得的实例的类型,以针对某些已知类型对其进行测试

    if(obj is CreditCardTable) {...} else ...
    
  2. 在基类型中添加virtualabstract方法,并使用代替而不必担心它是什么(因为它会自动调用派生最多的override

    obj.SomeMethod();
    
  3. 添加一个鉴别器 - 可能是virtual enum属性到BaseTable,所有派生类型都返回一个不同的值,并switch对该鉴别器:

    switch(obj.Type) { ... }