/// <summary> /// Creates a <see cref="LogEntry"/> from a dictionary as deserialized from JSON. /// </summary> /// <param name="entryDictionary">The <see cref="Dictionary{TKey, TValue}"/> from /// which to create the <see cref="LogEntry"/>.</param> /// <returns>A <see cref="LogEntry"/> with the values in the dictionary.</returns> internal static LogEntry FromDictionary(Dictionary<string, object> entryDictionary) { LogEntry entry = new LogEntry(); if (entryDictionary.ContainsKey("message")) { entry.message = entryDictionary["message"].ToString(); } if (entryDictionary.ContainsKey("timestamp")) { DateTime zeroDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); double timestampValue = Convert.ToDouble(entryDictionary["timestamp"], CultureInfo.InvariantCulture); entry.timestamp = zeroDate.AddMilliseconds(timestampValue); } if (entryDictionary.ContainsKey("level")) { string levelValue = entryDictionary["level"].ToString(); try { entry.level = (LogLevel)Enum.Parse(typeof(LogEntry), levelValue, true); } catch (ArgumentException) { // If the requested log level string is not a valid log level, // ignore it and use LogLevel.All. } } return entry; }