我编写了一个许可系统,它检查许可的不同方面(例如开始日期、结束日期、系统限制等)。例如,我在许可证中有一个限制,即您不能创建超过 5 个用户帐户。我有一个方法(例如 bool NumberOfUsersIsCoveredByLicense),它调用一个通用方法(例如 bool IsValidLicense)。 IsValidLicense 将检查许可证文件是否被操纵、是否过期等。
现在的问题是错误输出。如您所见,我有返回值为 bool 的方法,所以我知道存在许可证违规,但我不知道许可证检查的哪一部分失败了。 所以我在想,如何返回一个值,它描述了许可证的哪一部分被违反了。最简单的方法是返回一个字符串值,我会做类似的事情
var licenseValidationResult = NumberOfUsersIsCoveredByLicense(4)
if(licenseValidationResult.Equals(String.Empty))
{
//Success
}
else
{
ErrorMessage = GetErrorMessageByErrorCode(licenseValidationResult);
}
因此,如果许可证有效,我将返回一个空字符串,如果它无效,它将以类似 error1;error2;error3.. 的形式返回错误代码。我实际上不确定,如果这是一个好的解决方案。另一种可能性是枚举,像这样:
[Flags]
public enum LicenseErrorCodes
{
None = 0x00,
LicenseExpired = 0x01,
LicenseManipulated = 0x02,
MaxNumberOfUsersReached = 0x04,
[...]
}
但是,我不确定这是否是一个好的解决方案。是否有解决此类问题的“通用方法”/最佳实践?
最佳答案
如果许可违规被认为是失败或错误,那么在失败的地方抛出异常可能是合理的.
因此,定义您的 InvalidLicenseException
..
关于c# - 处理验证方法错误消息的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18892987/