using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; namespace TrainInfomationProviderService.StationInfo.Entities { public class StationStorage { /// /// 创建 的新实例(StationStorage) /// [JsonConstructor] protected StationStorage() { Stations = new Dictionary(StringComparer.OrdinalIgnoreCase); } public StationStorage(int version, IEnumerable detail) { Version = version; Stations = detail.ToDictionary(s => s.Code, s => s, StringComparer.OrdinalIgnoreCase); StationNameMap = detail.ToDictionary(s => s.Name, s => s, StringComparer.OrdinalIgnoreCase); } [JsonProperty("v")] public int Version { get; set; } [JsonProperty("s")] public Dictionary Stations { get; set; } [JsonIgnore] public Dictionary StationNameMap { get; private set; } [OnDeserialized] void DeserializeCallback(StreamingContext context) { Init(); } /// /// 初始化 /// protected void Init() { StationNameMap = Stations.ToDictionary(s => s.Value.Name, s => s.Value, StringComparer.OrdinalIgnoreCase); } } }