Dynamic Done Column

Changes for AOT
This commit is contained in:
2025-02-27 14:45:50 -07:00
parent 55adcb69aa
commit 30931eda9c
5 changed files with 141 additions and 53 deletions

View File

@ -2,6 +2,7 @@ using Microsoft.Extensions.Logging;
using System.Collections.ObjectModel;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace File_Folder_Helper.ADO2025.PI5;
@ -12,6 +13,12 @@ internal static partial class Helper20250219
ReadOnlyCollection<string> Columns,
string Logistics);
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(JsonElement[]))]
private partial class JsonElementCollectionSourceGenerationContext : JsonSerializerContext
{
}
private static ProcessDataStandardFormat GetLogisticsColumnsAndBody(string path, string[]? lines)
{
ProcessDataStandardFormat result;
@ -74,7 +81,7 @@ internal static partial class Helper20250219
{
JsonElement[]? results;
if (processDataStandardFormat.Body.Count == 0 || !processDataStandardFormat.Body[0].Contains('\t'))
results = JsonSerializer.Deserialize<JsonElement[]>("[]") ?? throw new Exception();
results = JsonSerializer.Deserialize("[]", JsonElementCollectionSourceGenerationContext.Default.JsonElementArray) ?? throw new Exception();
else
{
string value;
@ -112,7 +119,7 @@ internal static partial class Helper20250219
lines.Add(stringBuilder.ToString());
}
string json = $"[{string.Join(',', lines)}]";
results = JsonSerializer.Deserialize<JsonElement[]>(json);
results = JsonSerializer.Deserialize(json, JsonElementCollectionSourceGenerationContext.Default.JsonElementArray);
}
return results;
}
@ -127,6 +134,20 @@ internal static partial class Helper20250219
result = i;
break;
}
if (result is null)
{
for (int i = 0; i < jsonProperties.Length; i++)
{
if (jsonProperties[i].Name[0] != propertyName[0])
continue;
if (jsonProperties[i].Name.Length != propertyName.Length)
continue;
if (jsonProperties[i].Name != propertyName)
continue;
result = i;
break;
}
}
return result;
}
@ -267,9 +288,9 @@ internal static partial class Helper20250219
segmentsB = segment.Split('|');
if (segmentsB.Length != 2)
continue;
if (distinct.Contains(segmentsB[1]))
if (distinct.Contains(segmentsB[0]))
continue;
distinct.Add(segmentsB[1]);
distinct.Add(segmentsB[0]);
keyValuePairs.Add(segmentsB[0], segmentsB[1]);
}
string sourceDirectory = Path.GetFullPath(args[0]);