隐藏派生类中的枚举值

时间:2012-09-19 15:17:20

标签: 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; }
}

我正在尝试创建一个基类,从中导出这两个类,但是由于ValidationMessage可能是错误/警告/信息,因此枚举时出现问题,但CalculationMessage只能是警告或信息。

如何最好地实现这一目标?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以在setter中添加参数验证:

set
{
  if(value == MessageType.Warning || value == MessageType.Info)
  {
    this.messageType = value;
  }
  else
  {
    throw new ArgumentOutOfRangeException();
  }
}
然而,这是违反Liskov替代原则的行为。因此要小心并思考是否可能有办法解决(例如,根本不公开设置者,而是在内部确定MessageType。)