c# - 使用 R# 结构搜索和替换迁移代码
问题描述
我有想要迁移到新数据模型的遗留系统。它归结为许多类型名称更改。为了不破坏现有代码,我计划使用编译器开关:
#if NEW
var variable = new MyNewType();
#else
MyOldType variable = new MyOldType();
#endif
我创建了一个 Resharper 替换模式:
#if NEW
var $variable$ = new $type$();
#else
$type$ $variable$ = new $type$();
#endif
type
被定义为类型占位符并且variable
是标识符占位符。但是,在解析该表达式时出现语法错误:
意外占位符“变量”
是否不可能使用 Resharper 引入编译器开关,或者我哪里出错了?
解决方案
据我所知,R# 不支持这种情况。我相信这是因为 R# 依赖于当前代码的抽象语法树 (AST)。在您的情况下,AST 取决于根据是否NEW
定义实际编译哪些语句。
推荐阅读
- android - 在单个列表中显示多个异步任务的结果
- javascript - 在对象的现有循环内循环
- c++ - VSCode C++插件在调试文件名中包含汉字的文件时损坏
- c# - 目标 .NET 4.x 和 .NET Standard 2.0
- linux - 如何区分手动安装的包和linux上的依赖关系
- azure - 在 Azure Databricks 上,我如何知道挂载了哪个 blob 存储
- jquery - 如何在odoo 11中创建按钮附近的树视图中添加自定义按钮按钮
- prolog - 预期 Prolog A* 贪婪搜索运算符
- mongodb - 为什么 Mongo FETCH 在 count() 上使用 $nin?
- c# - C#字节数组长度不如python