ライセンスのさまざまな側面 (開始日、終了日、システム制限など) をチェックするライセンス システムを作成しました。たとえば、5 つを超えるユーザー アカウントを作成できないというライセンスの制限があります。一般的なメソッド (bool IsValidLicense など) を呼び出すメソッド (bool NumberOfUsersIsCoveredByLicense など) があります。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,
[...]
}
しかし、繰り返しになりますが、これが良い解決策になるかどうかはわかりません。このような問題を解決するための「一般的な方法」/ベストプラクティスはありますか?