例如,我有一個工廠類:C# - 如何指定一個枚舉必須在抽象類中實現?
abstract class UnitFactory<T> where T:Unit
{
abstract enum UnitType;
public abstract T GetUnit(UnitType type);
}
這裏,派生類必須有一個枚舉(當然abstract enum
不工作),表示它可以使這樣的單位,而不是一堆我認爲很難執行/管理的字符串常量。
所以我的問題是我怎麼做一個「抽象」像這樣的枚舉?或者如果這是不可能的,做類似的最佳做法是什麼?
對不起,我的英語不好,我看起來很愚蠢的問題。
編輯: 樣品子類:
class ArcherFactory : UnitFactory<Archer>
{
private static Archer _baseLongbowman = ....;
private static Archer _baseCrossbowman = ....;
// Child class must have a implementation of UnitType enum to
// tell the user that it can only make those kind of units.
public enum UnitType{ Longbowman, Crossbowman }
public override Archer getUnit(UnitType type)
{
if (type == UnitType.Longbowman) return _baseLongbowman.Clone(...);
return _baseCrossbowman.Clone(...);
}
}
d oes'abstract enum'是什麼意思?枚舉不支持繼承。他們只是值 –
枚舉是一種值類型,可悲的是,你不能從它得到任何東西 –
這聽起來像[XY問題]的案例(http://meta.stackexchange.com/questions/66377/what-是最XY-問題)。假設Y是解決方案(抽象枚舉),當它不起作用時,請求Y,而不是實際問題X. X的問題是什麼? –