2015-09-17 50 views
1

恒定值,我有一个常量字符串路线类:EnvDTE并获得从属性

public class Routes 
{ 
    public const string Route1 = "api/customers"; 
} 

并与路由属性的WebAPI控制器类:

public class CustomerController : ApiController 
{ 
    [Route(Routes.Route1)] 
    public IList<Customer> GetCustomers() 
    {..} 
} 

我需要得到的字符串值来自属性的常数使用EnvDTE

我能够得到CodeAttribute2对象,然后CodeAttributeArgument但其价值只是“Routes.Route1”值。

如何定位至路线类型,然后到ROUTE1不变?

回答

0

简短的回答(假定您事先知道类型驻留在您的项目的文件中,而不是在另一个引用的项目或编译的引用中)是使用EnvDTE.Project.CodeModel,然后导航代码元素直到找到FullName为“<命名空间> .Route.Route1”(应该是EnvDTE.CodeVariable),然后使用CodeVariable.InitExpression获取“api/customers”值的那个方法递归(请参阅HOWTO: Navigate the code elements of a file from a Visual Studio .NET macro or add-in中的方法)。

长的答案是:

How do I get a System.Type from a type name?

How to get a System.Type from an EnvDTE.CodeTypeRef or EnvDTE.CodeClass

+0

太谢谢你了! – Aqua