public static CsvWriter CreateWriter(this ICsvWriterService csvWriterService, string fileName, ICsvContext csvContext)
        {
            Argument.IsNotNull(() => csvWriterService);

            var dependencyResolver = csvWriterService.GetDependencyResolver();
            var fileService        = dependencyResolver.Resolve <IFileService>();

            // Note: don't dispose, the writer cannot be used when disposed
            var stream       = fileService.Open(fileName, FileMode.Create, FileAccess.Write, FileShare.Read);
            var streamWriter = new StreamWriter(stream);

            return(csvWriterService.CreateWriter(streamWriter, csvContext));
        }
        public static async Task WriteRecordsAsync(this ICsvWriterService csvWriterService, IEnumerable records, string fileName, ICsvContext csvContext)
        {
            Argument.IsNotNull(() => csvWriterService);

            var dependencyResolver = csvWriterService.GetDependencyResolver();
            var fileService        = dependencyResolver.Resolve <IFileService>();

            using (var stream = fileService.Open(fileName, FileMode.Create, FileAccess.Write, FileShare.Read))
            {
                using (var streamWriter = new StreamWriter(stream))
                {
                    await csvWriterService.WriteRecordsAsync(records, streamWriter, csvContext);
                }
            }
        }