2016-12-07 2 views
2

Использование Roslyn, как бы я нашел значение конструктора атрибута? Поэтому, учитывая следующий класс с атрибутом:Как найти значение аргумента конструктора атрибута с помощью Roslyn?

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

И ExampleAttribute будет выглядеть так (хотя источник не будет в том же растворе, как показано выше):

public class ExampleAttribute : Attribute 
{ 
    private readonly Type _type; 

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

Как бы я получить информацию (например, свойства, конструкторы) о типе ClassFromAnotherDll?

ответ

4

Вызвать GetAttributes() на любой символ (из семантической модели), чтобы получить список всех применяемых атрибутов.

Затем посмотрите на нужный атрибут ConstructorArguments.

Если аргумент является выражением typeof, его Value будет INamedTypeSymbol.

Смежные вопросы