我有以下
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只能是警告或信息。
如何最好地实现这一目标?
提前致谢。
答案 0 :(得分:3)
您可以在setter中添加参数验证:
set
{
if(value == MessageType.Warning || value == MessageType.Info)
{
this.messageType = value;
}
else
{
throw new ArgumentOutOfRangeException();
}
}
然而,这是违反Liskov替代原则的行为。因此要小心并思考是否可能有办法解决(例如,根本不公开设置者,而是在内部确定MessageType
。)