/// <summary> /// Transforms the given file into an object. /// This is done asynchronously. /// </summary> /// <typeparam name="T">The type of object to deserialise.</typeparam> /// <param name="reader">The reader object which converts the file.</param> /// <param name="location">The file containing the object data.</param> /// <returns>An object containing all the retrieved data from the file.</returns> /// <exception cref="ArgumentNullException">If the given reader or stream /// does not exist.</exception> /// <exception cref="InvalidFormatException">If a file was provided /// which does not use one of the <see cref="SupportedFormats"/>-formats. /// </exception> public static Task <T> ConvertFileAsync <T>(this IReader <T> reader, string location) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (string.IsNullOrEmpty(location)) { throw new ArgumentNullException(nameof(location)); } using (StreamReader stream = new StreamReader(location)) { return(reader.ConvertFileAsync(stream)); } }