From 63f31cf1c7e10fd776216b3e8811289784df648f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Apr 2026 09:34:57 +0000 Subject: [PATCH 1/2] Apply C# 12 syntax updates for .NET 8 Agent-Logs-Url: https://github.com/shibayan/CsvHelper.FastDynamic/sessions/f2f77655-d77f-465a-a07b-7ce4740bc334 Co-authored-by: shibayan <1356444+shibayan@users.noreply.github.com> --- CsvHelper.FastDynamic.Tests/TestData.cs | 18 ++++++------ CsvHelper.FastDynamic/CsvHeader.cs | 2 +- .../CsvHelper.FastDynamic.csproj | 2 +- CsvHelper.FastDynamic/CsvReaderExtensions.cs | 2 +- CsvHelper.FastDynamic/CsvRecordMetaObject.cs | 29 ++++--------------- 5 files changed, 18 insertions(+), 35 deletions(-) diff --git a/CsvHelper.FastDynamic.Tests/TestData.cs b/CsvHelper.FastDynamic.Tests/TestData.cs index 5686068..b785030 100644 --- a/CsvHelper.FastDynamic.Tests/TestData.cs +++ b/CsvHelper.FastDynamic.Tests/TestData.cs @@ -10,17 +10,17 @@ public static class TestData public static readonly string CsvContentWithMissingHeader = "Id,Name\r\n1,kazuakix\r\n2,daruyanagi,Ehime\r\n3,buchizo\r\n"; - public static readonly IReadOnlyList> CsvRecords = new[] - { - new Dictionary { { "Id", "1" }, { "Name", "kazuakix" }, { "Location", "Wakayama" } }, - new Dictionary { { "Id", "2" }, { "Name", "daruyanagi" }, { "Location", "Ehime" } }, - new Dictionary { { "Id", "3" }, { "Name", "buchizo" }, { "Location", "Osaka" } } - }; + public static readonly IReadOnlyList> CsvRecords = + [ + new Dictionary { ["Id"] = "1", ["Name"] = "kazuakix", ["Location"] = "Wakayama" }, + new Dictionary { ["Id"] = "2", ["Name"] = "daruyanagi", ["Location"] = "Ehime" }, + new Dictionary { ["Id"] = "3", ["Name"] = "buchizo", ["Location"] = "Osaka" } + ]; - public static readonly IReadOnlyList CsvAnonymousRecords = new[] - { + public static readonly IReadOnlyList CsvAnonymousRecords = + [ new { Id = 1, Name = "kazuakix", Location = "Wakayama" }, new { Id = 2, Name = "daruyanagi", Location = "Ehime" }, new { Id = 3, Name = "buchizo", Location = "Osaka" } - }; + ]; } diff --git a/CsvHelper.FastDynamic/CsvHeader.cs b/CsvHelper.FastDynamic/CsvHeader.cs index 26cb807..96cf3f9 100644 --- a/CsvHelper.FastDynamic/CsvHeader.cs +++ b/CsvHelper.FastDynamic/CsvHeader.cs @@ -15,7 +15,7 @@ public CsvHeader(string[] fieldNames) { _fieldNames = fieldNames ?? throw new ArgumentNullException(nameof(fieldNames)); - _fieldNameLookup = new Dictionary(fieldNames.Length, StringComparer.Ordinal); + _fieldNameLookup = new(fieldNames.Length, StringComparer.Ordinal); for (var i = fieldNames.Length - 1; i >= 0; i--) { diff --git a/CsvHelper.FastDynamic/CsvHelper.FastDynamic.csproj b/CsvHelper.FastDynamic/CsvHelper.FastDynamic.csproj index 5fd5718..721e8ae 100644 --- a/CsvHelper.FastDynamic/CsvHelper.FastDynamic.csproj +++ b/CsvHelper.FastDynamic/CsvHelper.FastDynamic.csproj @@ -2,7 +2,7 @@ net8.0 - latest + 12.0 diff --git a/CsvHelper.FastDynamic/CsvReaderExtensions.cs b/CsvHelper.FastDynamic/CsvReaderExtensions.cs index 2aeea5e..7f68410 100644 --- a/CsvHelper.FastDynamic/CsvReaderExtensions.cs +++ b/CsvHelper.FastDynamic/CsvReaderExtensions.cs @@ -64,7 +64,7 @@ public static IEnumerable EnumerateDynamicRecords(this CsvReader csvRea public static async Task> GetDynamicRecordsAsync(this CsvReader csvReader) { - var records = new List(); + List records = []; await foreach (var record in csvReader.EnumerateDynamicRecordsAsync()) { diff --git a/CsvHelper.FastDynamic/CsvRecordMetaObject.cs b/CsvHelper.FastDynamic/CsvRecordMetaObject.cs index 67b97c1..f8f4c9a 100644 --- a/CsvHelper.FastDynamic/CsvRecordMetaObject.cs +++ b/CsvHelper.FastDynamic/CsvRecordMetaObject.cs @@ -9,7 +9,7 @@ namespace CsvHelper.FastDynamic; // Thanks, from https://github.com/StackExchange/Dapper/blob/master/Dapper/SqlMapper.DapperRowMetaObject.cs internal sealed class CsvRecordMetaObject : DynamicMetaObject { - private static readonly string[] s_emptyArray = Array.Empty(); + private static readonly string[] s_emptyArray = []; private static readonly MethodInfo s_getValueMethod = typeof(IDictionary).GetProperty("Item").GetGetMethod(); private static readonly MethodInfo s_setValueMethod = typeof(CsvRecord).GetMethod(nameof(CsvRecord.SetValue), new[] { typeof(string), typeof(object) }); @@ -21,52 +21,35 @@ public CsvRecordMetaObject(Expression expression, BindingRestrictions restrictio public override DynamicMetaObject BindGetIndex(GetIndexBinder binder, DynamicMetaObject[] indexes) { - var parameters = new[] - { - indexes[0].Expression - }; + var parameters = [indexes[0].Expression]; return CallMethod(s_getValueMethod, parameters); } public override DynamicMetaObject BindGetMember(GetMemberBinder binder) { - var parameters = new Expression[] - { - Expression.Constant(binder.Name) - }; + Expression[] parameters = [Expression.Constant(binder.Name)]; return CallMethod(s_getValueMethod, parameters); } public override DynamicMetaObject BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args) { - var parameters = new Expression[] - { - Expression.Constant(binder.Name) - }; + Expression[] parameters = [Expression.Constant(binder.Name)]; return CallMethod(s_getValueMethod, parameters); } public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) { - var parameters = new[] - { - indexes[0].Expression, - value.Expression - }; + var parameters = [indexes[0].Expression, value.Expression]; return CallMethod(s_setValueMethod, parameters); } public override DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value) { - var parameters = new[] - { - Expression.Constant(binder.Name), - value.Expression - }; + var parameters = [Expression.Constant(binder.Name), value.Expression]; return CallMethod(s_setValueMethod, parameters); } From bf9896132d1879df0ffc0705e4f065ed05f34397 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Apr 2026 09:35:13 +0000 Subject: [PATCH 2/2] Fix typed collection expressions in meta object Agent-Logs-Url: https://github.com/shibayan/CsvHelper.FastDynamic/sessions/f2f77655-d77f-465a-a07b-7ce4740bc334 Co-authored-by: shibayan <1356444+shibayan@users.noreply.github.com> --- CsvHelper.FastDynamic/CsvRecordMetaObject.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CsvHelper.FastDynamic/CsvRecordMetaObject.cs b/CsvHelper.FastDynamic/CsvRecordMetaObject.cs index f8f4c9a..ce311b3 100644 --- a/CsvHelper.FastDynamic/CsvRecordMetaObject.cs +++ b/CsvHelper.FastDynamic/CsvRecordMetaObject.cs @@ -21,7 +21,7 @@ public CsvRecordMetaObject(Expression expression, BindingRestrictions restrictio public override DynamicMetaObject BindGetIndex(GetIndexBinder binder, DynamicMetaObject[] indexes) { - var parameters = [indexes[0].Expression]; + Expression[] parameters = [indexes[0].Expression]; return CallMethod(s_getValueMethod, parameters); } @@ -42,14 +42,14 @@ public override DynamicMetaObject BindInvokeMember(InvokeMemberBinder binder, Dy public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) { - var parameters = [indexes[0].Expression, value.Expression]; + Expression[] parameters = [indexes[0].Expression, value.Expression]; return CallMethod(s_setValueMethod, parameters); } public override DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value) { - var parameters = [Expression.Constant(binder.Name), value.Expression]; + Expression[] parameters = [Expression.Constant(binder.Name), value.Expression]; return CallMethod(s_setValueMethod, parameters); }