mini-software / MiniExcel

Fast, Low-Memory, Easy Excel .NET helper to import/export/template spreadsheet (support Linux, Mac)
https://www.nuget.org/packages/MiniExcel/
Apache License 2.0
2.81k stars 342 forks source link

Merge async and not-async implementation #601

Open shps951023 opened 6 months ago

duszekmestre commented 6 months ago

What do you mean by this? Maybe I can help

shps951023 commented 6 months ago

@duszekmestre ❤thanks, e.g. ExcelOpenXmlSheetWriter.Async.cs and ExcelOpenXmlSheetWriter.cs, their logic and code 99% same, but miniexcel needs duplicate code to use async, Task, await keyword. I think these code can be merged.

duszekmestre commented 6 months ago

Yes - I tried to do this but I have limited time for doing this. Some code can be reused and in latest PR i refactor one of the method to prepare string values to write them to the writer.

duszekmestre commented 6 months ago

I started to reuse code in PR #602

In the next part I'll try to reuse code between different types of objects on saving.

duszekmestre commented 6 months ago

@duszekmestre ❤thanks, e.g. ExcelOpenXmlSheetWriter.Async.cs and ExcelOpenXmlSheetWriter.cs, their logic and code 99% same, but miniexcel needs duplicate code to use async, Task, await keyword. I think these code can be merged.

I think it is not possible to completely reuse same code. Async/await method should be written separately. The only thing which is possible is creating same codebase to generate XML strings for both implementations to reuse and easier maintenance.

I saw that different types (data reader, data table, enumerable) are managed separately so many errors are done because of lack of implementation to one of them. This the hardest and most important thing to rewrite.

If you have any other idea please share with me.

shps951023 commented 6 months ago

Yes, my first idea is we can only maintain async method like HttpClient sync method just call async method GetAwaiter and GetResult