在组织层次结构中导航,如何表示顶层



我正在处理分层组织数据。

public class Position
{
public string PositionCode { get; set; }
public string Title { get; set; }
public Position ReportsToPosition { get; set; }
}

每个职位都有一个指向其报告职位的属性。然而,在组织的最高层是总裁,他不会向真正的职位报告。在它的位置上,我创建了一个名为PositionNone的派生类。

public class PositionNone : Position
{
private static PositionNone _positionNone;
public PositionNone()
: base(positionCode: "None",
title: "None",
reportsToPosition: _positionNone){}
}

这段代码会生成,但感觉不对。

  • 我们使用的是Nullable引用类型,并且_positionNone未初始化
  • 由于应该只需要一个PositionNone,我想将其标记为静态,并使其具有自引用public static class PositionNone : Position,但这是不允许的

我想把富人模型的层次结构保持在总统之下,但需要弄清楚如何代表最高层。当我向上走的时候,我可以处理可能的无限循环。

关于如何实施,有什么建议吗?我是不是完全偏离了底线?我需要换个方向吗?

我会使PositionNone成为Position的静态属性(或字段(。类似于:

public class Position
{
public Position(string positionCode, string title, Position reportsTo)
{
PositionCode = positionCode;
Title = title;
ReportsToPosition = reportsTo;
}
public string PositionCode { get; set; }
public string Title { get; set; }
public Position ReportsToPosition { get; set; }
public static Position PositionNone => new Position(
positionCode: "None", 
title: "None", 
reportsTo: Position.PositionNone);
}

当有人没有报告时,意味着他是总统,即使在不可为null的环境中,也不要害羞地使用null。

Delete PositionNone并使ReportsToPosition显式为null。

最新更新