我有课:

internal class Stage
{
    public long StageId { get; set; }
    public string StageName { get; set; }
    public int? Order { get; set; }

    public Stage()
    {
        Order = 0;
    }
}

我还有:
public class GroupStage : Stage
{
    private override long StageId { set { StageId = value; } }

    public GroupStage() : base() { }

    public void InsertStage(long groupId)
    {
    }

    public static void SetStageOrder(long stageId, int order)
    {
     ....
    }

    public static void DeleteStage(long stageId)
    {
     ....
    }

    public static GroupStage[] GetStages(long groupId)
    {
     ....
    }
}

以及:
public class TaskStage : Stage
{
    public DateTime? Time { get; set; }

    public TaskStage()
        : base()
    {
     ....
    }

    public static Stage GetNextTaskStage(Guid companyId, long taskId)
    {
     ....
    }

    public static Stage[] GetTaskStages(Guid companyId, long taskId)
    {
     ....
    }
}

这不起作用,我得到一个例外:
可访问性不一致:基类Stage的可访问性低于类GroupStage
我希望Stage类是私有的,除了GroupStageTaskStage之外没有访问权限。我还想让StageIdGroupStageTaskStage中成为私有。
在不复制StageGroupStage中的TaskStage成员的情况下,我如何做到这一点?

最佳答案

不能使派生类比基类更容易访问。您可以做的是使taskstage和groupstage也成为内部的,然后继承和公开公共接口,以便只有接口在程序集外部可见。

public interface IGroupStage
{
    public string StageName{ get; set; }
    ...
}

interal class GroupStage : IGroupStage
{
...
}

10-05 21:09