in src/CodeGenerators/SettingsGen/Wrappers/GeneratorSyntaxContextWrapper.cs [34:79]
public IList<IAttributeWrapper> GetAttributes(ISymbol symbol)
{
ImmutableArray<AttributeData> attrs = symbol.GetAttributes();
IList<IAttributeWrapper> attributeWrappers = new List<IAttributeWrapper>();
// Format the attributes
foreach (AttributeData attribute in attrs)
{
string? attrClassName = attribute.AttributeClass?.Name;
if (attrClassName is null)
{
continue;
}
// Parse the attribute arguments into a dictionary
AttributeWrapper attributeWrapper = new(attrClassName);
ImmutableArray<KeyValuePair<string, TypedConstant>> namedArgs = attribute.NamedArguments;
foreach (KeyValuePair<string, TypedConstant> arg in namedArgs)
{
if (arg.Value.IsNull)
{
continue;
}
string valueString = arg.Value.Value?.ToString() ?? string.Empty;
if (string.Equals(arg.Key, nameof(ParameterAttribute.MustOverride), StringComparison.OrdinalIgnoreCase) ||
string.Equals(arg.Key, nameof(ParameterAttribute.IsEncrypted), StringComparison.OrdinalIgnoreCase))
{
valueString = valueString.ToLowerInvariant();
}
if (string.Equals(arg.Key, nameof(ParameterAttribute.Type), StringComparison.OrdinalIgnoreCase)
&& Enum.TryParse(arg.Value.Value?.ToString() ?? string.Empty, out TypeKind typeKind))
{
valueString = typeKind.ToString("g");
}
attributeWrapper.Arguments.Add(arg.Key, valueString);
}
attributeWrappers.Add(attributeWrapper);
}
return attributeWrappers;
}