using Application.Domain.Entities; using System.Collections.Generic; using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Unicode; namespace System.ComponentModel.DataAnnotations { public class IoTDataConfigAttribute : Attribute { public IoTDataConfigAttribute(IoTDataType propType= IoTDataType.Data, IoTValueType valueType= IoTValueType.String, string unit = null, string enumValues = null,bool hide=false) { this.PropType = propType; this.ValueType = valueType; this._enumValues = enumValues; this.Unit = unit; this.Hide = hide; } public IoTDataType PropType { get; private set; } public IoTValueType ValueType { get; private set; } private readonly string _enumValues; public string Unit { get; } public bool Hide { get; } public string GetEnumValues() { if (string.IsNullOrEmpty(this._enumValues)) { return null; } var list = new Dictionary(); var values = _enumValues.Split(','); int i = 0; foreach (var item in values) { var value = item; if (item.Contains("=")) { var kv = item.Split('='); i = Convert.ToInt32(kv[0]); value = kv[1]; } list.Add(i.ToString(), value); i++; } return JsonSerializer.Serialize(list, new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) }); } } }