Я хотел бы создать настраиваемый атрибут, который получает значение параметра Enum. Пока мне удалось создать его со строковым параметром, но я полностью заблудился в управлении перечислением в Roslyn API, и отсутствие примеров в документации, конечно, не помогает.
Мой рабочий пример :
return SyntaxFactory.AttributeList(
SyntaxFactory.SingletonSeparatedList(
SyntaxFactory.Attribute(
SyntaxFactory.IdentifierName("TestAttribute"),
SyntaxFactory.AttributeArgumentList(
SyntaxFactory.SeparatedList(
new[]
{
SyntaxFactory.AttributeArgument(
SyntaxFactory.LiteralExpression(
SyntaxKind.StringLiteralExpression, SyntaxFactory.Literal(
"TestEnum.SomeValue"))))
}
)
)
)
)
);
Использование этого фрагмента позволяет мне получить следующий результат:
[TestAttribute("TestEnum.SomeValue")]
public void SomeMethod() {}
Я хочу достичь следующего:
[TestAttribute(TestEnum.SomeValue)] // Enum instead of string
public void SomeMethod() {}