Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EnvDTE和从属性获取常量值_C#_Visual Studio_Envdte - Fatal编程技术网

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”值

答案很长: