/// <summary> /// Loads a package info from this file's content if possible /// </summary> /// <param name="logger">A logging interface to write parser errors to</param> /// <param name="result">The resulting package info if processing succeeded</param> /// <returns>True if the file has successfully been processed, false otherwise</returns> public static bool GetPackage(this FileDescriptor file, ILogSystem logger, out PackageMeta result) { try { JsonDocument document = new JsonDocument(); using (Stream fs = file.Open(FileMode.Open, FileAccess.Read, FileShare.Read)) if (document.Load(fs)) { result = new PackageMeta(); PropertyMapper.Assign(result, document, true, true); return(true); } else if (logger != null) { foreach (string error in document.Errors) { logger.Error(error); } } } catch (Exception er) { if (logger != null) { logger.Error(er.Message); } } result = null; return(false); }
public bool TryParseValue(Type targetType, object value, out object result) { JsonNode node = (value as JsonNode); if (node != null && node.Type == JsonNodeType.Object) { JsonDocument settings = new JsonDocument(); settings.AddAppend(null, node); result = new T(); PropertyMapper.Assign(result, settings, true, true); return((result as T).IsValid); } else { result = null; return(false); } }