代码之家  ›  专栏  ›  技术社区  ›  Nix

vs api帮助流程在重构后自动修复代码中断[关闭]

  •  2
  • Nix  · 技术社区  · 15 年前

    我发现自己无数次重新组织我们的解决方案(72多个项目),努力减少代码。很多时候,它涉及到拉出常见的类型/库并将它们四处移动。

    它总是涉及一个重复的编译器错误,所以我必须在很多不同的地方修复相同的编译器错误。我正在寻找一个VS API的指南,这样我可以做一些代码生成/自动修复。

    即使你没有确切的答案,你能给我指一下我该去哪看吗?有编译器API吗?重构API?有什么关于我怎样做的建议吗?

    用例:

    所以第一个问题(两个问题中最简单的一个):

    当我将文件从一个项目移动到另一个项目时自动修复。这个过程是为了找出错误

    “找不到类型或命名空间名称'movedclass'。

    然后移除旧名称空间,添加新名称空间,并添加项目引用。

    案例二…重构到模式。

    例子:

    原始基本VO类:

       public class BaseVO{
          public AuditInfo { get;set;}
    
       }
       public class BaseKey{
    
       }
    

    我们的所有业务对象(每个都在单独的类中)。

       public class ExampleBusinessVO : BaseVO{
          public AuditInfo { get;set;}
          public ExampleBusinessKey BusinessKey { get;set;}
       }
    
       public class ExampleBusinessKey{
    
    
       }
    


    现在假设我们想要在basevo和base key之间添加一个显式链接,并强制all实现equals/hashcode

    新的基本VO类:

       public abstract class BaseVO<TKey>{
          TKey BusinessKey{get;set;}
          public abstract override bool Equals(object obj);          
          public abstract override int GetHashCode();
    
       }
       public class BaseKey{
    
       }
    

    然后我必须将这些更改级联到所有VO。(哎哟)

       //Add generic
       public class ExampleBusinessVO : BaseVO<ExampleBusinessKey>{
           //Remove old business key  
    
            //Implement methods
           public override bool Equals(object obj){
    
           }
       }
    
       public class ExampleBusinessKey: BaseKey{
    
    
       }
    

    现在我认识到我不能修复所有的错误,但是能够编写一些东西来检查类的编译错误是很好的。然后我可以制定一个实用的解决方案:

    对于每个vos if错误:“使用泛型类型…需要1个类型参数”,然后读取类文件并找到实现basekey的类,然后将其添加到模板方法。

    请注意,我正在寻找一个自动化的解决方案,而不是重构工具