子类中的访问列表<Object>

Access List<Object> in subclasses

我目前正在编写交通模拟。我正在研究 class 可以放置在 gui 上的物品(十字路口)。

一种方法使用 List 并使用构造函数简单地将交通灯组(同步交通灯)添加到列表 List tlg。

public TrafficLightGroup(int tlgID, Direction? direction, Lane lane1, Lane? lane2)
    {
        this.tlgID = tlgID;
        this.lane1 = lane1;
        this.lane2 = lane2;
        this.direction = direction;
    }

class Item
{
public virtual void SetTrafficLightSystem()
    {
        tlg.Add(new TrafficLightGroup(1, Direction.West, Lane.Left, Lane.Straight));
        tlg.Add(new TrafficLightGroup(2, Direction.West, Lane.Right, null));

        tlg.Add(new TrafficLightGroup(3, Direction.South, Lane.Left, Lane.Straight));
        tlg.Add(new TrafficLightGroup(4, Direction.South, Lane.Right, null));

        tlg.Add(new TrafficLightGroup(1, Direction.East, Lane.Left, Lane.Straight));
        tlg.Add(new TrafficLightGroup(2, Direction.East, Lane.Right, null));

        tlg.Add(new TrafficLightGroup(3, Direction.North, Lane.Left, Lane.Straight));
        tlg.Add(new TrafficLightGroup(4, Direction.North, Lane.Right, null));


    }
}

现在我想从名为 CrossingPedestrians 的子class 访问同一个列表并更改基本方法。我如何访问列表?我使用默认获取;并设置;现在,但我读到这不是一个好的解决方案。

这里是子class

class CrossingPedestrians : Item
{
    public override void SetTrafficLightSystem()
    {
        base.SetTrafficLightSystem();                       
        Tlg.Add(new TrafficLightGroup(5, null, Lane.Pedestrian, null));
    }

那么,我该如何解决访问器正确访问列表的问题,我认为访问器无法以正确的方式运行。

您应该向我们展示 Item class 的相关部分。

无论如何,您可能担心将 Tlg 暴露为 属性。这本身并没有错,你只需要做到 protected:

protected List<TrafficLightGroup> Tlg {get; set;}

这样childclasses还是可以访问的,但是外界访问不了