类似于Enum的房产设计

时间:2016-05-31 07:55:21

标签: c#

我试图在C#中创建一个等同于Blockly Block的类。 Here是官方区块创建者以供参考。

现在我试图想出为我的对象设计Connections属性的最佳方法。它有点像枚举,但对于某些值,我还需要关联一种或两种类型。此外,连接是互斥的,因此我不能同时拥有左连接和顶连接。

public enum BlocklyConnectionType
{
    None, LeftOutput, Top, Bottom, TopAndBottom
}
public class BlocklyBlock : IBlocklyComponent
{
    public BlocklyConnectionType ConnectionType { get; set; }
}

如果我这样做,那么我该如何设置类型?我必须为我的BlocklyBlock类添加两个属性,我不喜欢这样。

所以我想到的另一种方式就是建立一个新的连接类。

class BlocklyConnection
{
    public BlocklyConnectionType ConnectionType { get; set; }
    public BlocklyType ValueType { get; set; }
    public BlocklyType SecondValueType { get; set; }

    public BlocklyConnection(BlocklyConnectionType connectionType, BlocklyType valueType, BlocklyType valueType2 = null)
    {
        ConnectionType = connectionType;
        ValueType = valueType;
        SecondValueType = valueType2;
    }
}

我更喜欢这个,但它仍然不完美。

我还考虑过从枚举中删除TopAndBottom选项,然后为其余选项制作某种位标志,但这可能只会使事情变得复杂,因为我必须进行大量的额外检查标志有效性,也没有解决我的价值关联问题。

0 个答案:

没有答案