Атрибут NRefactory Resolve
Я хотел бы разрешить атрибуты, которые связаны с методами в классе, используя NRefactory.
Я создаю синтаксическое дерево из файла CS. Затем я продолжаю искать единственный тип, который у меня есть в файле. Затем я нахожу методы, которые связаны с файлом.
var parser = new ICSharpCode.NRefactory.CSharp.CSharpParser();
SyntaxTree tree = parser.Parse(line, "demo.cs");
...
CSharpUnresolvedFile file = tree.ToTypeSystem();
foreach (IUnresolvedTypeDefinition type in file.TopLevelTypeDefinitions)
{
foreach (IUnresolvedMethod method in type.Methods)
{
}
}
Я знаю, что IUnresolvedMethod имеет свойство под названием "Атрибуты", которое имеет тип IList.
Архив, который я анализирую, выглядит так:
namespace DynamicsFieldsSite.Controllers.FundRaising
{
/// <summary>
/// Controlador API de Acciones de Cuenta
/// </summary>
public class AccountActionsApiController : ApiController
{
private const string fullControllerPath = "api/FundRaising/AccountActionsApi";
private const string actionKeyPath = "AccountActionsApi";
private AccountActionManagement _accountActionManage;
private SystemAppComponent _systemAppComp;
/// <summary>
/// Inicializa una nueva instancia de la clase <see cref="AccountActionsApiController" />.
/// </summary>
public AccountActionsApiController()
{
_accountActionManage = new AccountActionManagement(this.GenerateInformation());
_systemAppComp = new SystemAppComponent();
}
/// <summary>
/// Obtiene un listado de modelos vista item de Acciones de Cuenta.
/// </summary>
/// <returns>Listado de modelos vista item de Acciones de Cuenta.</returns>
[WebApiAuthorize(ActionKey = actionKeyPath + "-01")]
[Route(fullControllerPath + "/Get")]
public List<AccountActionItemViewModel> GetAllAccountActions()
{
return _accountActionManage.GetAllAccountActions();
}
}
}
Я хотел бы разрешить атрибуты, чтобы я мог получить строку в тегах атрибута. (Например, fullControllerPath + "/Get"). Я посмотрел вокруг, но я не нашел помощи, чтобы начать меня. Я столкнулся с таким SO вопросом, в котором ОП удалось решить синтаксическое дерево, но мне не стало ясно, как то, что он сделал, может быть связано с тем, что я хочу сделать. Спасибо за вашу долю опыта в этом.