我是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; }
}
}
答案 0 :(得分:2)
3个选项:
使用is
,as
或GetType()
来明确检查您获得的实例的类型,以针对某些已知类型对其进行测试
if(obj is CreditCardTable) {...} else ...
在基类型中添加virtual
或abstract
方法,并使用代替而不必担心它是什么(因为它会自动调用派生最多的override
)
obj.SomeMethod();
添加一个鉴别器 - 可能是virtual
enum属性到BaseTable
,所有派生类型都返回一个不同的值,并switch
对该鉴别器:
switch(obj.Type) { ... }