C# EnvDTE和从属性获取常量值
我有一个具有常量字符串路由的类:C# EnvDTE和从属性获取常量值,c#,visual-studio,envdte,C#,Visual Studio,Envdte,我有一个具有常量字符串路由的类: public class Routes { public const string Route1 = "api/customers"; } 以及具有路由属性的WebApi控制器类: public class CustomerController : ApiController { [Route(Routes.Route1)] public IList<Customer> GetCustomers() {..} } 公共类C
public class Routes
{
public const string Route1 = "api/customers";
}
以及具有路由属性的WebApi控制器类:
public class CustomerController : ApiController
{
[Route(Routes.Route1)]
public IList<Customer> GetCustomers()
{..}
}
公共类CustomerController:ApicController
{
[路线(路线1)]
公共IList GetCustomers()
{..}
}
我需要使用EnvDTE从属性中获取常量的字符串值
我能够接收CodeAttribute2对象,然后接收CodeAttributeArgument的值,但其值仅为“Routes.Route1”
如何导航到路由类型,然后导航到路由1常量 简单的回答是(假设您事先知道该类型驻留在您的项目的文件中,而不是在另一个引用的项目或编译的引用中),使用EnvDTE.project.CodeModel,然后递归地导航代码元素(请参见中的方法),直到找到全名为“.Route.Route1”的元素,它应该是一个EnvDTE.CodeVariable,然后使用CodeVariable.InitExpression获取“api/customers”值
答案很长:
简单的回答是(假设您事先知道类型驻留在您的项目的文件中,而不是在另一个引用的项目或编译的引用中),使用EnvDTE.project.CodeModel,然后递归地导航代码元素(请参阅中的方法),直到找到具有全名“.Route.Route1”的元素,它应该是一个EnvDTE.CodeVariable,然后使用CodeVariable.InitExpression获取“api/customers”值
答案很长: