【发布时间】:2013-02-14 15:24:49
【问题描述】:
给定一个简单的类层次结构,其中每个类都派生自一个抽象基类。每个派生类都需要以某种方式提供一个枚举“值”,基类将在某些基本方法中使用它。
例如
基类:
public abstract class AbstractFoo
{
bool SaveFoo()
{
switch (BarType){...}
}
}
和派生类
public class BananaFoo:AbstractFoo
{
//barttype = fruit;
}
public class WhaleFoo:AbstractFoo
{
//barttype = mammal;
}
有很多方法可以确保从 AbstractFoo 派生的所有类都实现属性“枚举 BarType”
public abstract BarType BarType{get;}
然后我可以在每个派生类中实现 BarType 以返回正确的类型,或者添加一个抽象方法来做非常相似的事情。
public BarType BarType{get{return _bartype;}}
或者添加一个具体的方法来返回一个字段 - 然后我需要记住添加该字段,但是打字要少得多(C&P)?
推荐的方法是什么?
【问题讨论】:
标签: c# inheritance abstract-class