[英]abstract class property from Factory C#
考慮以下抽象類:
public abstract class BuildingBase
{
public abstract BuildingType Type { get; }
}
這個類由兩個類繼承:
public class Appartment : BuildingBase
{
public override BuildingType Type => BuildingType.Appartment;
}
public class House: BuildingBase
{
public override BuildingType Type => BuildingType.House;
}
我有一個工廠應該根據傳遞的類型“構建”:
public class Builder {
public BuildingBase Build(BuildingType type) {
// how to get this implemented without if / else .. case when ... etc
}
}
在這種情況下,我會使用泛型,如下所示:
public class Builder
{
public TBuildingBase Build<TBuildingType>()
where TBuildingBase : BuildingBase, new()
{
var result = new TBuildingBase();
...
}
}
但我不確定您是否需要Enum
作為輸入。 恐怕如果您確實想堅持下去,您的選擇要么是 if-else 構造,要么是 @Selvin 提到的構造函數映射,要么是使用反射(呃)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.