Skip to content

Commit

Permalink
Added more nullability.
Browse files Browse the repository at this point in the history
  • Loading branch information
JoshClose committed Jun 19, 2024
1 parent 004c285 commit 7dbb3fe
Show file tree
Hide file tree
Showing 167 changed files with 1,113 additions and 1,119 deletions.
631 changes: 318 additions & 313 deletions docs/change-log/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/sitemap.xml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>/CsvHelper/CsvHelper/google6ad86f23ff698b61</loc></url><url><loc>/CsvHelper/CsvHelper/api</loc></url><url><loc>/CsvHelper/CsvHelper/change-log</loc></url><url><loc>/CsvHelper/CsvHelper/examples</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/attributes</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/optional-maps</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/auto-mapping</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/inline-type-conversion</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/constant-value</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-by-name</loc></url><url><loc>/CsvHelper/CsvHelper/examples/type-conversion</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-by-alternate-names</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/ignoring-properties</loc></url><url><loc>/CsvHelper/CsvHelper/examples/prerequisites/using-and-dispose</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-by-index</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/type-conversion</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing/appending-to-an-existing-file</loc></url><url><loc>/CsvHelper/CsvHelper/examples/csvdatareader</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-duplicate-names</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-properties</loc></url><url><loc>/CsvHelper/CsvHelper/examples/prerequisites</loc></url><url><loc>/CsvHelper/CsvHelper/examples/prerequisites/streams</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/validation</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/enumerate-class-records</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/get-class-records</loc></url><url><loc>/CsvHelper/CsvHelper/examples/prerequisites/reading-and-writing-files</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/get-dynamic-records</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/reading-by-hand</loc></url><url><loc>/CsvHelper/CsvHelper/getting-started</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/reading-multiple-data-sets</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/get-anonymous-type-records</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/reading-multiple-record-types</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing/write-dynamic-objects</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v15</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing/write-anonymous-type-objects</loc></url><url><loc>/CsvHelper/CsvHelper/examples/type-conversion/custom-type-converter</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v13</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v23</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing/write-class-objects</loc></url><url><loc>/CsvHelper/CsvHelper/examples/type-conversion/type-converter-options</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v14</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v24</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v30</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v4</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v18</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v19</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v27</loc></url><url><loc>/CsvHelper/CsvHelper/migration</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v28</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v10</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v16</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v11</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v7</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v21</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v17</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v12</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v8</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v22</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v25</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v2</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v29</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v26</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v20</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v3</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v9</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v5</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v6</loc></url><url><loc>/CsvHelper/CsvHelper</loc></url></urlset>
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>/CsvHelper/CsvHelper/google6ad86f23ff698b61</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/auto-mapping</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/constant-value</loc></url><url><loc>/CsvHelper/CsvHelper/api</loc></url><url><loc>/CsvHelper/CsvHelper/change-log</loc></url><url><loc>/CsvHelper/CsvHelper/examples</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/attributes</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-by-index</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/ignoring-properties</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/inline-type-conversion</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-by-name</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-duplicate-names</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-by-alternate-names</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/type-conversion</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/optional-maps</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/mapping-properties</loc></url><url><loc>/CsvHelper/CsvHelper/examples/prerequisites</loc></url><url><loc>/CsvHelper/CsvHelper/examples/type-conversion</loc></url><url><loc>/CsvHelper/CsvHelper/examples/prerequisites/reading-and-writing-files</loc></url><url><loc>/CsvHelper/CsvHelper/examples/csvdatareader</loc></url><url><loc>/CsvHelper/CsvHelper/examples/configuration/class-maps/validation</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/enumerate-class-records</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/get-class-records</loc></url><url><loc>/CsvHelper/CsvHelper/examples/prerequisites/using-and-dispose</loc></url><url><loc>/CsvHelper/CsvHelper/examples/prerequisites/streams</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/get-dynamic-records</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/reading-by-hand</loc></url><url><loc>/CsvHelper/CsvHelper/examples/type-conversion/custom-type-converter</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/reading-multiple-data-sets</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/get-anonymous-type-records</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing/write-anonymous-type-objects</loc></url><url><loc>/CsvHelper/CsvHelper/examples/type-conversion/type-converter-options</loc></url><url><loc>/CsvHelper/CsvHelper/examples/reading/reading-multiple-record-types</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing/write-dynamic-objects</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v18</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing/write-class-objects</loc></url><url><loc>/CsvHelper/CsvHelper/examples/writing/appending-to-an-existing-file</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v28</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v7</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v8</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v10</loc></url><url><loc>/CsvHelper/CsvHelper/migration</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v11</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v12</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v16</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v22</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v19</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v13</loc></url><url><loc>/CsvHelper/CsvHelper/getting-started</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v17</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v23</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v2</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v20</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v14</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v26</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v5</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v30</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v21</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v15</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v27</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v6</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v4</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v29</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v24</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v9</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v3</loc></url><url><loc>/CsvHelper/CsvHelper/migration/v25</loc></url><url><loc>/CsvHelper/CsvHelper</loc></url></urlset>
6 changes: 6 additions & 0 deletions src/CsvHelper.Website/input/change-log/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Change Log

### 33.0.1

#### Bug Fixes

- Added more things that can be null.

### 33.0.0

#### Features
Expand Down
6 changes: 3 additions & 3 deletions src/CsvHelper/Configuration/ClassMapBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public interface IHasMap<TClass> : IBuildableClass<TClass>
/// <param name="useExistingMap">If true, an existing map will be used if available.
/// If false, a new map is created for the same member.</param>
/// <returns>The member mapping.</returns>
IHasMapOptions<TClass, TMember> Map<TMember>(Expression<Func<TClass, TMember>> expression, bool useExistingMap = true);
IHasMapOptions<TClass, TMember> Map<TMember>(Expression<Func<TClass, TMember?>> expression, bool useExistingMap = true);
}

/// <summary>
Expand Down Expand Up @@ -303,7 +303,7 @@ public ClassMapBuilder()
map = new BuilderClassMap<TClass>();
}

public IHasMapOptions<TClass, TMember> Map<TMember>(Expression<Func<TClass, TMember>> expression, bool useExistingMap = true)
public IHasMapOptions<TClass, TMember> Map<TMember>(Expression<Func<TClass, TMember?>> expression, bool useExistingMap = true)
{
return new MemberMapBuilder<TClass, TMember>(map, map.Map(expression, useExistingMap));
}
Expand Down Expand Up @@ -345,7 +345,7 @@ public MemberMapBuilder(ClassMap<TClass> classMap, MemberMap<TClass, TMember> me
}

#pragma warning disable CS0693 // Type parameter has the same name as the type parameter from outer type
public IHasMapOptions<TClass, TMember> Map<TMember>(Expression<Func<TClass, TMember>> expression, bool useExistingMap = true)
public IHasMapOptions<TClass, TMember> Map<TMember>(Expression<Func<TClass, TMember?>> expression, bool useExistingMap = true)
{
return new MemberMapBuilder<TClass, TMember>(classMap, classMap.Map(expression, useExistingMap));
}
Expand Down
8 changes: 4 additions & 4 deletions src/CsvHelper/Configuration/ClassMap`1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public ClassMap() : base(typeof(TClass)) { }
/// <param name="useExistingMap">If true, an existing map will be used if available.
/// If false, a new map is created for the same member.</param>
/// <returns>The member mapping.</returns>
public virtual MemberMap<TClass, TMember> Map<TMember>(Expression<Func<TClass, TMember>> expression, bool useExistingMap = true)
public virtual MemberMap<TClass, TMember> Map<TMember>(Expression<Func<TClass, TMember?>> expression, bool useExistingMap = true)
{
var (classMap, member) = GetMemberMap(expression);
var memberMap = classMap.Map(typeof(TClass), member, useExistingMap); ;
Expand All @@ -40,7 +40,7 @@ public virtual MemberMap<TClass, TMember> Map<TMember>(Expression<Func<TClass, T
/// <param name="useExistingMap">If true, an existing map will be used if available.
/// If false, a new map is created for the same member.</param>
/// <returns>The member mapping.</returns>
public virtual MemberMap Map<T>(Expression<Func<T, object>> expression, bool useExistingMap = true)
public virtual MemberMap Map<T>(Expression<Func<T, object?>> expression, bool useExistingMap = true)
{
var (classMap, member) = GetMemberMap(expression);
var memberMap = classMap.Map(typeof(TClass), member, useExistingMap);
Expand All @@ -58,13 +58,13 @@ public virtual MemberMap Map<T>(Expression<Func<T, object>> expression, bool use
/// <param name="expression">The expression.</param>
/// <param name="constructorArgs">Constructor arguments used to create the reference map.</param>
/// <returns>The reference mapping for the member.</returns>
public virtual MemberReferenceMap References<TClassMap>(Expression<Func<TClass, object>> expression, params object[] constructorArgs) where TClassMap : ClassMap
public virtual MemberReferenceMap References<TClassMap>(Expression<Func<TClass, object?>> expression, params object[] constructorArgs) where TClassMap : ClassMap
{
var member = ReflectionHelper.GetMember(expression);
return References(typeof(TClassMap), member, constructorArgs);
}

private (ClassMap, MemberInfo) GetMemberMap<TModel, TProperty>(Expression<Func<TModel, TProperty>> expression)
private (ClassMap, MemberInfo) GetMemberMap<TModel, TProperty>(Expression<Func<TModel, TProperty?>> expression)
{
var stack = ReflectionHelper.GetMembers(expression);
if (stack.Count == 0)
Expand Down
8 changes: 4 additions & 4 deletions src/CsvHelper/Configuration/CsvConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public record CsvConfiguration : IReaderConfiguration, IWriterConfiguration
public virtual bool AllowComments { get; set; }

/// <inheritdoc/>
public virtual BadDataFound BadDataFound { get; set; } = ConfigurationFunctions.BadDataFound;
public virtual BadDataFound? BadDataFound { get; set; } = ConfigurationFunctions.BadDataFound;

/// <inheritdoc/>
public virtual int BufferSize { get; set; } = 0x1000;
Expand Down Expand Up @@ -75,7 +75,7 @@ public record CsvConfiguration : IReaderConfiguration, IWriterConfiguration
public virtual bool HasHeaderRecord { get; set; } = true;

/// <inheritdoc/>
public virtual HeaderValidated HeaderValidated { get; set; } = ConfigurationFunctions.HeaderValidated;
public virtual HeaderValidated? HeaderValidated { get; set; } = ConfigurationFunctions.HeaderValidated;

/// <inheritdoc/>
public virtual bool IgnoreBlankLines { get; set; } = true;
Expand Down Expand Up @@ -108,7 +108,7 @@ public record CsvConfiguration : IReaderConfiguration, IWriterConfiguration
public virtual MemberTypes MemberTypes { get; set; } = MemberTypes.Properties;

/// <inheritdoc/>
public virtual MissingFieldFound MissingFieldFound { get; set; } = ConfigurationFunctions.MissingFieldFound;
public virtual MissingFieldFound? MissingFieldFound { get; set; } = ConfigurationFunctions.MissingFieldFound;

/// <inheritdoc/>
public virtual CsvMode Mode { get; set; }
Expand All @@ -134,7 +134,7 @@ public virtual string NewLine
public virtual char Quote { get; set; } = '"';

/// <inheritdoc/>
public virtual ReadingExceptionOccurred ReadingExceptionOccurred { get; set; } = ConfigurationFunctions.ReadingExceptionOccurred;
public virtual ReadingExceptionOccurred? ReadingExceptionOccurred { get; set; } = ConfigurationFunctions.ReadingExceptionOccurred;

/// <inheritdoc/>
public virtual ReferenceHeaderPrefix? ReferenceHeaderPrefix { get; set; }
Expand Down
2 changes: 1 addition & 1 deletion src/CsvHelper/Configuration/IParserConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public interface IParserConfiguration
/// You can supply your own function to do other things like logging the issue
/// instead of throwing an exception.
/// </summary>
BadDataFound BadDataFound { get; }
BadDataFound? BadDataFound { get; }

/// <summary>
/// Gets or sets the maximum size of a field.
Expand Down
6 changes: 3 additions & 3 deletions src/CsvHelper/Configuration/IReaderConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,22 @@ public interface IReaderConfiguration : IParserConfiguration
/// will throw a <see cref="ValidationException"/> if there is no header for a given member mapping.
/// You can supply your own function to do other things like logging the issue instead of throwing an exception.
/// </summary>
HeaderValidated HeaderValidated { get; }
HeaderValidated? HeaderValidated { get; }

/// <summary>
/// Gets the function that is called when a missing field is found. The default function will
/// throw a <see cref="MissingFieldException"/>. You can supply your own function to do other things
/// like logging the issue instead of throwing an exception.
/// </summary>
MissingFieldFound MissingFieldFound { get; }
MissingFieldFound? MissingFieldFound { get; }

/// <summary>
/// Gets the function that is called when a reading exception occurs.
/// The default function will re-throw the given exception. If you want to ignore
/// reading exceptions, you can supply your own function to do other things like
/// logging the issue.
/// </summary>
ReadingExceptionOccurred ReadingExceptionOccurred { get; }
ReadingExceptionOccurred? ReadingExceptionOccurred { get; }

/// <summary>
/// Prepares the header field for matching against a member name.
Expand Down
2 changes: 1 addition & 1 deletion src/CsvHelper/Configuration/MemberMap.cs
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ public virtual MemberMap Default(object defaultValue, bool useOnConversionFailur
/// what other mapping configurations are specified.
/// </summary>
/// <param name="constantValue">The constant value.</param>
public virtual MemberMap Constant(object constantValue)
public virtual MemberMap Constant(object? constantValue)
{
if (Data.Member == null)
{
Expand Down
2 changes: 1 addition & 1 deletion src/CsvHelper/Configuration/MemberMapCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ public virtual MemberMap this[int index]
/// <typeparam name="T">The <see cref="System.Type"/> the member is on.</typeparam>
/// <param name="expression">The member expression.</param>
/// <returns>The <see cref="MemberMap"/> for the given expression, or null if not found.</returns>
public virtual MemberMap? Find<T>(Expression<Func<T, object>> expression)
public virtual MemberMap? Find<T>(Expression<Func<T, object?>> expression)
{
var member = ReflectionHelper.GetMember(expression);
return Find(member);
Expand Down
4 changes: 2 additions & 2 deletions src/CsvHelper/Configuration/MemberMap`1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ public virtual MemberMap<TClass, TMember> Default(TMember defaultValue, bool use
/// </summary>
/// <param name="defaultValue">The default value.</param>
/// <param name="useOnConversionFailure">Use default on conversion failure.</param>
public virtual MemberMap<TClass, TMember> Default(string defaultValue, bool useOnConversionFailure = false)
public virtual MemberMap<TClass, TMember> Default(string? defaultValue, bool useOnConversionFailure = false)
{
Data.Default = defaultValue;
Data.IsDefaultSet = true;
Expand All @@ -151,7 +151,7 @@ public virtual MemberMap<TClass, TMember> Default(string defaultValue, bool useO
/// what other mapping configurations are specified.
/// </summary>
/// <param name="constantValue">The constant value.</param>
public virtual MemberMap<TClass, TMember> Constant(TMember constantValue)
public virtual MemberMap<TClass, TMember> Constant(TMember? constantValue)
{
Data.Constant = constantValue;
Data.IsConstantSet = true;
Expand Down
2 changes: 1 addition & 1 deletion src/CsvHelper/CsvDataReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ public int GetOrdinal(string name)
var headerRecord = csv.HeaderRecord;
for (var i = 0; i < (headerRecord?.Length ?? 0); i++)
{
args = new PrepareHeaderForMatchArgs(headerRecord?[i], i);
args = new PrepareHeaderForMatchArgs(headerRecord?[i] ?? string.Empty, i);
var headerPrepared = csv.Configuration.PrepareHeaderForMatch(args);
if (csv.Configuration.CultureInfo.CompareInfo.Compare(namePrepared, headerPrepared, CompareOptions.IgnoreCase) == 0)
{
Expand Down
Loading

0 comments on commit 7dbb3fe

Please sign in to comment.