2 votes

Comment trouver la valeur de l'argument d'un constructeur d'attribut en utilisant Roslyn ?

En utilisant Roslyn, comment puis-je trouver la valeur du constructeur d'un attribut ? Donc, étant donné la classe suivante avec un attribut :

[Example(typeof(ClassFromAnotherDll))]
public class ExampleClass
{
    public int JustANumber { get; set; }
}

Et le ExampleAttribute ressemblerait à ceci (bien que la source ne soit pas dans la même solution que celle ci-dessus) :

public class ExampleAttribute : Attribute
{
    private readonly Type _type;

    public ExampleAttribute(Type type)
    {
        _type = type;
    }
}

Comment puis-je obtenir des informations (par exemple, des propriétés, des constructeurs) sur l'objet de l'enquête ? ClassFromAnotherDll type ?

4voto

SLaks Points 391154

Appelez GetAttributes() sur n'importe quel symbole (du modèle sémantique) pour obtenir une liste de tous les attributs appliqués.

Ensuite, regardez le ConstructorArguments de l'attribut que vous voulez.

Si l'argument est un typeof l'expression, son Value sera un INamedTypeSymbol .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X