Получить свойство доступа к CodeElement

#visual-studio #add-in #extensibility #envdte

#visual-studio #надстройка #расширяемость #envdte

Вопрос:

Я пишу надстройку для VS 2010. Не могу найти ответ на вопрос — Как я могу получить свойство доступа к CodeElement, если оно у него есть.

Я пытался отразить, но безрезультатно. Пример. CodeElement — это метод класса

 public void GetAccess (CodeElement codeElement)

{

      object code = codeElement;
      Type t = code.GetType();
      t.GetProperty("Access") = vsCMAccess.vsCMAccessPublic;

}
  

Но это не работает..

Помогите, пожалуйста!

Ответ №1:

Доступ доступен только для некоторых типов CodeElements, поэтому вам нужно будет проверить тип имеющегося у вас CodeElement, привести к определенному типу и затем извлечь свойство.

Пример:

 if (codeElement.Kind == vsCMElementFunction)
{
    return ((CodeFunction)codeElement).Access;
}
else if (codeElement.Kind == vsCMElementProperty)
{
    return ((CodeProperty)codeElement).Access;
}