子类中的访问列表<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还是可以访问的,但是外界访问不了
我目前正在编写交通模拟。我正在研究 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还是可以访问的,但是外界访问不了