File: LanguageExtensions.cs

package info (click to toggle)
golang-github-microsoft-dev-tunnels 0.0.25-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,988 kB
  • sloc: cs: 9,969; java: 2,767; javascript: 328; xml: 186; makefile: 5
file content (22 lines) | stat: -rw-r--r-- 747 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System.Linq;
using Microsoft.CodeAnalysis;
using System.Diagnostics.CodeAnalysis;

namespace Microsoft.DevTunnels.Generator;

internal static class LanguageExtensions
{
    public static bool TryGetJsonPropertyName(this IPropertySymbol? property, out string? jsonPropertyName)
    {
        if (property?.GetAttributes().FirstOrDefault((a) => a.AttributeClass?.Name == "JsonPropertyNameAttribute") is AttributeData propertyNameAttribute &&
            propertyNameAttribute.ConstructorArguments.FirstOrDefault().Value?.ToString() is string result &&
            !string.IsNullOrEmpty(result))
        {
            jsonPropertyName = result;
            return true;
        }

        jsonPropertyName = null;
        return false;
    }
}