Resharper Initialize 来自构造函数的字段在 2017.1 中不可用

Posted

技术标签:

【中文标题】Resharper Initialize 来自构造函数的字段在 2017.1 中不可用【英文标题】:Resharper Initialize field from constructor not available in 2017.1 【发布时间】:2017-10-09 20:17:19 【问题描述】:

添加字段后,我可以按 Ctrl + Enter 并选择 Initialize field from constructor。如果没有声明,它会向现有 ctor 添加一个参数或使用该参数创建一个新 ctor。

我想知道这只是新版本的 Resharper 2017.1 还是旧版本的 VS 2013? 我让它在 VS 2015 和 Resharper 2016.3 上工作。但是当我在 VS 2013 和 Resharper 2017.1 中按 Ctrl + Enter 时它没有出现。

【问题讨论】:

【参考方案1】:

ReSharper 2017.1 Help 声明如下:

生成类型构造函数

重新锐化 |编辑 |生成代码 |构造函数

Alt+插入 |构造函数ReSharper_GenerateConstructor

构造函数生成向导会创建一个非默认构造函数,该构造函数接受选定字段、属性和自动属性的参数。

所有生成的构造函数都遵循相同的模式,其中:

构造函数中包含的每个字段、属性或自动属性都使用参数进行初始化。

参数名称来源于对应字段或属性的名称。

如果有非默认基类构造函数,则将所需参数添加到生成的构造函数中,并传递给基类构造函数。

提示您可以通过键入ctor(不带参数)、ctorf(带有初始化所有字段的参数)或ctorp(带有初始化所有属性的参数)来快速生成构造函数。

提示您可以在代码编辑| 设置常用代码生成选项。 ReSharper 选项的成员生成页面。

【讨论】:

我的问题不是关于生成一个演员。问题是关于通过添加参数来修改现有的。 我不需要生成构造函数,我需要通过现有构造函数添加字段初始化,或者如果没有构造函数,则使用字段初始化创建一个新的构造函数!!!这在 VS2015 和 Resharper 2016.3 中运行良好。我从未使用过 Alt + Ins |构造函数,我相信这是一种无用的功能。经常发生依赖我一一添加的情况。我需要一次添加 2 个或更多依赖项是非常罕见的。创建构造函数后,我不希望它重新创建,我只想为要添加的其他新字段添加初始化。 有人知道如何启用此功能吗? 我也有兴趣了解这个问题的解决方案。再次注意,问题不在于构造函数的生成,而是现有属性的构造函数字段添加。【参考方案2】:

我发现了另一个重构灯泡(快速操作菜单 Ctrl+。)(至少在 VS 2022 的新版本 resharper 中)有一个菜单“将参数添加到 XXX.ctor”

【讨论】:

以上是关于Resharper Initialize 来自构造函数的字段在 2017.1 中不可用的主要内容,如果未能解决你的问题,请参考以下文章

来自 ReSharper 的“从不使用自动属性访问器”警告

如何区分消息是来自 ReSharper 还是 Visual Studio

ThinkPHP中__initialize()和类的构造函数__construct()用法分析

__construct()和__initialize()

resharper 8.1

thinkphp5.1控制器初始化函数initialize与构造函数__construct区别