2

我是 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; }
    }

}
4

1 回答 1

2

3个选项:

  1. 使用is,asGetType()显式检查给定实例的类型,以针对某些已知类型对其进行测试

    if(obj is CreditCardTable) {...} else ...
    
  2. virtualorabstract方法添加到基本类型,并使用它不必担心它是哪个(因为它会自动调用最衍生的override

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

    switch(obj.Type) { ... }
    
于 2013-06-26T11:16:08.050 回答