隐藏派生类中的枚举值

  • 本文关键字:枚举 派生 隐藏 c#
  • 更新时间 :
  • 英文 :


我有以下内容

public enum MessageType
{
    Warning,
    Info,
    Error
}
public class CalculationMessage
{
    public string Message { get; set; }
    public MessageType Type { get; set; }
}
public class ValidationMessage
{
    public string Message { get; set; }
    public MessageType Type { get; set; }
    public string ErrorValue { get; set; }
}

我正在尝试创建一个从中派生这两个类的基类,但是我对枚举有问题,因为验证消息可以是错误/警告/信息,但计算消息只能是警告或信息。

如何最好地实现这一点?

提前谢谢。

您可以在资源库中添加参数验证:

set
{
  if(value == MessageType.Warning || value == MessageType.Info)
  {
    this.messageType = value;
  }
  else
  {
    throw new ArgumentOutOfRangeException();
  }
}

然而,这违反了利斯科夫替代原则。因此,要小心并考虑是否有解决方法(例如,根本不公开二传手,而是在内部确定MessageType)。