Skip to content
This repository has been archived by the owner on Jul 9, 2024. It is now read-only.

Commit

Permalink
Fix AOT warning issues and clean up.
Browse files Browse the repository at this point in the history
  • Loading branch information
IEvangelist committed Jan 30, 2024
1 parent 8ff3560 commit eb8bd12
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
2 changes: 1 addition & 1 deletion src/JsonParseNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public JsonParseNode(JsonElement node)
public DateTimeOffset? GetDateTimeOffsetValue()
{
// JsonElement.GetDateTimeOffset is super strict so try to be more lenient if it fails(e.g. when we have whitespace or other variant formats).
// ref - https://docs.microsoft.com/en-us/dotnet/standard/datetime/system-text-json-support
// ref - https://learn.microsoft.com/dotnet/standard/datetime/system-text-json-support
if(!_jsonNode.TryGetDateTimeOffset(out var value))
value = DateTimeOffset.Parse(_jsonNode.GetString()!);

Expand Down
17 changes: 11 additions & 6 deletions src/JsonSerializationWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ public void WriteNullValue(string? key)
/// <param name="key">The key of the json node</param>
/// <param name="value">The enumeration value</param>
#if NET5_0_OR_GREATER
public void WriteEnumValue<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]T>(string? key, T? value) where T : struct, Enum
public void WriteEnumValue<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string? key, T? value) where T : struct, Enum
#else
public void WriteEnumValue<T>(string? key, T? value) where T : struct, Enum
#endif
Expand All @@ -246,7 +246,12 @@ public void WriteEnumValue<T>(string? key, T? value) where T : struct, Enum
if(value.HasValue)
{
if(typeof(T).GetCustomAttributes<FlagsAttribute>().Any())
writer.WriteStringValue(Enum.GetValues(typeof(T))
writer.WriteStringValue(
#if NET5_0_OR_GREATER
Enum.GetValues<T>()
#else
Enum.GetValues(typeof(T))
#endif
.Cast<T>()
.Where(x => value.Value.HasFlag(x))
.Select(GetEnumName)
Expand Down Expand Up @@ -316,7 +321,7 @@ public void WriteCollectionOfEnumValues<T>(string? key, IEnumerable<T?>? values)
public void WriteByteArrayValue(string? key, byte[]? value)
{
if(value != null)//empty array is meaningful
WriteStringValue(key, value.Any() ? Convert.ToBase64String(value) : string.Empty);
WriteStringValue(key, value.Length > 0 ? Convert.ToBase64String(value) : string.Empty);
}

/// <summary>
Expand All @@ -328,7 +333,7 @@ public void WriteByteArrayValue(string? key, byte[]? value)
public void WriteObjectValue<T>(string? key, T? value, params IParsable?[] additionalValuesToMerge) where T : IParsable
{
var filteredAdditionalValuesToMerge = additionalValuesToMerge.OfType<IParsable>().ToArray();
if(value != null || filteredAdditionalValuesToMerge.Any())
if(value != null || filteredAdditionalValuesToMerge.Length > 0)
{
if(!string.IsNullOrEmpty(key)) writer.WritePropertyName(key!);
if(value != null) OnBeforeObjectSerialization?.Invoke(value);
Expand Down Expand Up @@ -452,7 +457,7 @@ public void Dispose()
GC.SuppressFinalize(this);
}
#if NET5_0_OR_GREATER
private static string? GetEnumName<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]T>(T value) where T : struct, Enum
private static string? GetEnumName<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] T>(T value) where T : struct, Enum
#else
private static string? GetEnumName<T>(T value) where T : struct, Enum
#endif
Expand All @@ -462,7 +467,7 @@ public void Dispose()
if (Enum.GetName(type, value) is not { } name)
throw new ArgumentException($"Invalid Enum value {value} for enum of type {type}");

if (type.GetMember(name).FirstOrDefault()?.GetCustomAttribute<EnumMemberAttribute>() is { } attribute)
if (type.GetField(name)?.GetCustomAttribute<EnumMemberAttribute>() is { } attribute)
return attribute.Value;

return name.ToFirstCharacterLowerCase();
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.Kiota.Serialization.Json.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
<AssemblyTitle>Kiota JSON Serialization Library for dotnet using System.Text.Json</AssemblyTitle>
<Authors>Microsoft</Authors>
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;</TargetFrameworks>
<TargetFrameworks>netstandard2.0;netstandard2.1;net6.0;net7.0;net8.0;</TargetFrameworks>
<LangVersion>latest</LangVersion>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<PackageIconUrl>http://go.microsoft.com/fwlink/?LinkID=288890</PackageIconUrl>
Expand Down Expand Up @@ -34,7 +34,7 @@
<PackageReadmeFile>README.md</PackageReadmeFile>
<NoWarn>$(NoWarn);NU5048;NETSDK1138</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFrameworkVersion)' == 'net5.0'">
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch($(TargetFrameworkVersion), 'net\\d\\.\\d'))">
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>

Expand Down

0 comments on commit eb8bd12

Please sign in to comment.