NRefactory解析属性

时间:2016-02-09 16:19:10

标签: c# nrefactory

我想使用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有一个名为“Attributes”的属性,它是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 question,其中OP设法解决了语法树,但我并不清楚他所做的事情与我想做的事情有什么关系。感谢您分享这方面的专业知识。

0 个答案:

没有答案