我有课:
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
类是私有的,除了GroupStage
和TaskStage
之外没有访问权限。我还想让StageId
在GroupStage
和TaskStage
中成为私有。在不复制
Stage
和GroupStage
中的TaskStage
成员的情况下,我如何做到这一点? 最佳答案
不能使派生类比基类更容易访问。您可以做的是使taskstage和groupstage也成为内部的,然后继承和公开公共接口,以便只有接口在程序集外部可见。
public interface IGroupStage
{
public string StageName{ get; set; }
...
}
interal class GroupStage : IGroupStage
{
...
}