我有以下内容
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
)。