簡體   English   中英

來自 Factory C# 的抽象類屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM