- 
                Notifications
    You must be signed in to change notification settings 
- Fork 0
Extend FileUtil
        Code Ninja edited this page Nov 12, 2024 
        ·
        1 revision
      
    You can implement your own custom provider and pass it to the engine to provide delimiter separated file lines by implementing your own bespoke logic. This could be reading the contents from the datadase or over http, etc.
To implement a custom provider you need to implement IFileProvide interface
An example dummy implementation is as follows
 public class CustomProvider : IFileProvider
{
    public FileMeta[] GetFiles()
    {
       // custom implementation to return file lines 
        return new[]
        {
            new FileMeta
            {
                FileName = "Name",
                FileSize = 100,
                FilePath = "File Path",
                Lines = new[] {"H|22-10-2016|Employee Status", "D|John Walsh|456RT4|True", "F|1"}
            }
        };
    }
}
You can pass the custom provider to the engine as follows -
var files = new Engine(configSettings, new CustomProvider()).GetFiles<Employee>();
var files = new Engine(configSettings, new CustomProvider()).GetFiles<Header, Employee, Footer>();
Returns
public class File<TH, TD, TF> 
    {
        /// <summary>
        /// File meta data.
        /// </summary>
        public FileMeta FileMeta { get; set; }
        /// <summary>
        /// Parsed header lines.
        /// </summary>
        public TH Header { get; set; }
        /// <summary>
        /// Parsed data lines.
        /// </summary>
        public TD[] Data { get; set; }
        /// <summary>
        /// Parsed footer line.
        /// </summary>
        public TF Footer { get; set; }
    }