using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace ZonyLrcTools.Common.Infrastructure.Exceptions
{
///
/// 错误码相关的帮助类。
///
public static class ErrorCodeHelper
{
public static Dictionary ErrorMessages { get; }
static ErrorCodeHelper()
{
ErrorMessages = new Dictionary();
}
///
/// 从 err_msg.json 文件加载错误信息。
///
public static void LoadErrorMessage()
{
// 防止重复加载。
if (ErrorMessages.Count != 0)
{
return;
}
var jsonPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "error_msg.json");
using var jsonReader = new JsonTextReader(File.OpenText(jsonPath));
var jsonObj = JObject.Load(jsonReader);
var errors = jsonObj.SelectTokens("$.Error.*");
var warnings = jsonObj.SelectTokens("$.Warning.*");
errors.Union(warnings).Select(m => m.Parent).OfType().ToList()
.ForEach(m => ErrorMessages.Add(int.Parse(m.Name), m.Value.Value()));
}
public static string GetMessage(int errorCode) => ErrorMessages[errorCode];
}
}