EnvDTE解析函数代码[更长]

时间:2015-10-20 15:35:55

标签: c# visual-studio-2015 envdte

我正在尝试通过VisualStudio的C# COM分析EnvDTE项目源代码。期望的任务是:

  1. 在项目结构中找到具有给定名称的CodeClass。 [完成]
  2. 查找其所有公开{get; set;}属性。 [完成]
  3. 找到其公共构造函数(具有与找到的属性的计数匹配的参数数量的构造函数)。 [完成]
  4. 尝试将构造函数参数与公共属性相匹配。这一步依赖于一些假设:

    • 应该是以下表格中的构造函数:

      public ClassName(typeC paramC, TypeA paramA, typeB paramB...)
      {
          PropA = paramA;
          PropC = paramC;
          PropB = paramB;
          ...
      }
      
    • 应该只是PropA = paramA之类的直接参数到属性的分配,不允许使用propA = paramB + paramC
  5. 在理想世界中,我想识别哪个参数分配给哪个属性,而没有任何额外的假设或元数据添加到源类,如:

    • 参数顺序有任何规则。
    • 分配顺序有任何规则。
    • 参数/属性命名约定有任何规则。
    • 与属性关联的其他属性有任何规则。

    问题是:我们可以通过EnvDTE分析所描述的构造函数体吗?

    我已经有CodeFunction个对象代表这个已识别的构造函数也作为他的CodeParameter参数集合,但是我无法访问代码(不确定它是否可行,但是枚举成员vsCMElement.vsCMElementAssignmentStmt给了我希望它可能......)

1 个答案:

答案 0 :(得分:0)

看起来CodeFunctionEnvDTE)不支持访问方法体:-(除了纯文本) - :

Get all code statements code statements
Lack of code model support inside methods