using LMS.Common.Enums; using Newtonsoft.Json; using System.ComponentModel.DataAnnotations; namespace LMS.Repository.DB; public class Options { [Key] public required string Key { get; set; } = string.Empty; /// /// Value of the option,这个值是一个json字符串 /// public string? Value { get; set; } = string.Empty; public OptionTypeEnum Type { get; set; } = OptionTypeEnum.String; // 写一个字段,映射Value,判断是不是json字符串,是的话就解析成对象 // 写一个字段,映射Value,判断是不是json字符串,是的话就解析成对象 public T? GetValueObject() { if (string.IsNullOrEmpty(Value)) { return default; } if (Type == OptionTypeEnum.JSON) { return JsonConvert.DeserializeObject(Value ?? "{}"); } if (Type == OptionTypeEnum.Number) { if (double.TryParse(Value, out double result)) { return (T)Convert.ChangeType(result, typeof(T)); } return default; } return (T)Convert.ChangeType(Value, typeof(T)); } // 写一个方法,设置Value的值 public void SetValueObject(T value) { if (value == null) { Value = string.Empty; return; } if (Type == OptionTypeEnum.JSON) { Value = JsonConvert.SerializeObject(value); } else { Value = value.ToString(); } } }