Migrating from version 19 to 20
+ConvertUsing
+ConvertUsing
was renamed to Convert
.
// v19
+Map(m => m.Property).ConvertUsing(row => row.GetField<int>(0) + row.GetField<int>(1));
+
+// v20
+Map(m => m.Property).Convert(row => row.GetField<int>(0) + row.GetField<int>(1));
+
+CsvConfiguration
+All properties changed from get; set;
to get; init;
.
// v19
+var config = new CsvConfiguration(CultureInfo.InvariantCulture);
+config.Delimiter = ";";
+
+// v20
+var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+{
+ Delimiter = ";",
+}
+
+CsvConfiguration
changed from a class
to a record
.
// v19
+class MyConfig : CsvConfiguration {}
+
+// v20
+record MyConfig : CsvConfiguration {}
+
+ShouldQuote
+ShouldQuote
now takes in IWriterRow
instead of CsvContext
.
// v19
+var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+{
+ ShouldQuote = (field, row) => true,
+};
+
+// v20
+var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+{
+ ShouldQuote = (field, context) => true,
+};
+
+NewLine
+Changed from enum NewLines
to char?
.
// v19
+var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+{
+ NewLine = NewLines.LF,
+};
+
+// v20
+var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+{
+ NewLine = '\n',
+};
+
+NewLineString
+This was removed. Any code referencing this should be deleted.
+RegisterClassMap
+This moved to CsvContext
.
// v19
+csv.Configuration.RegisterClassMap<MyMap>();
+
+// v20
+csv.Context.RegisterClassMap<MyMap>();
+
+UnregisterClassMap
+This moved to CsvContext
.
// v19
+csv.Configuration.UnregisterClassMap<MyMap>();
+
+// v20
+csv.Context.UnregisterClassMap<MyMap>();
+
+AutoMap
+This moved to CsvContext
.
// v19
+csv.Configuration.AutoMap<MyType>();
+
+// v20
+csv.Context.AutoMap<MyType>();
+
+IParserConfiguration
+All setters removed.
+// v19
+var config = new CsvConfiguration(CultureInfo.InvariantCulture);
+config.Delimiter = ";";
+
+// v20
+var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+{
+ Delimiter = ";",
+};
+
+-
+
- Added
bool CacheFields
.
+ - Added
bool LeaveOpen
.
+ - Added
char? NewLine
.
+ - Added
ParserMode Mode
.
+ - Added
char[] WhiteSpaceChars
.
+ - Removed
bool IgnoreQuotes
.
+
Any classes that implement IParserConfiguration
will need these changes.
IReaderConfiguration
+All setters removed.
+// v19
+var config = new CsvConfiguration(CultureInfo.InvariantCulture);
+config.Delimiter = ";";
+
+// v20
+var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+{
+ Delimiter = ";",
+};
+
+-
+
- Removed
TypeConverterOptionsCache
.
+ - Removed
TypeConverterCache
.
+ - Removed
Maps
.
+ - Removed
RegisterClassMap
.
+ - Removed
UnregisterClassMap
.
+ - Removed
AutoMap
.
+
Any classes that implement IReaderConfiguration
will need these changes.
ISerializerConfiguration
+This interface was removed and it's properties were added to IWriteConfiguration
.
// v19
+class MyConfig : ISerializerConfiguration {}
+
+// v20
+class MyConfig : IWriterConfiguration {}
+
+IWriterConfiguration
+All setters removed.
+// v19
+var config = new CsvConfiguration(CultureInfo.InvariantCulture);
+config.Delimiter = ";";
+
+// v20
+var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+{
+ Delimiter = ";",
+};
+
+-
+
- Removed
QuoteString
.
+ - Removed
TypeConverterCache
.
+ - Removed
MemberTypes
.
+ - Removed
Maps
.
+ - Removed
RegisterClassMap
.
+ - Removed
UnregisterClassMap
.
+ - Removed
AutoMap
.
+
Any classes that implement IWriterConfiguration
will need these changes.
MemberMap
+ConvertUsing
renamed to Convert
.
// v19
+Map(m => m.Property).ConvertUsing(row => row.Get(0));
+Map(m => m.Property).ConvertUsing(value => value?.ToString() ?? string.Empty);
+
+// v20
+Map(m => m.Property).Convert(row => row.Get(0));
+Map(m => m.Property).Convert(value => value?.ToString() ?? string.Empty);
+
+CsvParser
+string[] Read()
changed to bool Read()
.
// v19
+string[] record;
+while ((record = parser.Read()) != null)
+{
+}
+
+// v20
+while (parser.Read())
+{
+ // Only get fields you need.
+ var field1 = parser[0];
+ var field2 = parser[1];
+
+ // Get all fields.
+ var record = parser.Record;
+}
+
+Constructor paramter IFieldReader fieldReader
removed from all constructors.
// v19
+var parser = new CsvParser(fieldReader);
+
+// v20
+var parser = new CsvParser();
+
+CsvSerializer
+Removed. Functionality moved into CsvWriter
.
IFieldReader
+Removed. Functionality moved into CsvParser
.
IParser
+-
+
- Added
long ByteCount
.
+ - Added
long CharCount
.
+ - Added
int Count
.
+ - Added
string this[int index]
.
+ - Added
string[] Record
.
+ - Added
string RawRecord
.
+ - Added
int Row
.
+ - Added
int RawRow
.
+ - Changed
string[] Read
tobool Read
.
+ - Changed
Task<string[]> ReadAsync
toTask<bool> ReadAsync
.
+
Any classes that implement IParser
will need these changes.
IReader
+-
+
- Removed
ICsvParser Parser
.
+
Any classes that implement IReader
will need these changes.
IReaderRow
+-
+
- Added
int ColumnCount
.
+ - Added
int CurrentIndex
.
+ - Added
string[] HeaderRecord
.
+ - Added
IParser Parser
.
+
Any classes that implement IReaderRow
will need these changes.
ISerializer
+Removed. Functionality moved into IWriter
.
IWriterRow
+-
+
- Added
string[] HeaderRecord
.
+ - Added
int Row
.
+ - Added
int Index
.
+
RecordBuilder
+Removed. Functionality moved into CsvWriter
.
Caches
+enum Caches
was removed. Modifying internal caches is not supported anymore.
+Any code referencing this should be removed.
ReadingContext/WritingContext
+ReadingContext
and WritingContext
was merged into a single CsvContext
.
+Anywhere either of these was used should change to CsvContext
.
Func/Action
+Any place a Func
or Action
was used now has a dedicated delegate
.
+This should only affect classes that are inheriting ClassMap
+or CsvConfiguration
.
CsvFieldReader
+Class removed. Code was wrapped into CsvParser
.