У меня есть класс:
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
?