5

这个问题很相似,但我的问题似乎是在未回答的评论中提出的。

我创建了一个 C# 类。我使用alt-insert添加构造函数。我向构造函数添加一个参数,然后使用alt-enter从该参数创建和初始化一个字段,如下所示:

替代文字

问题是我的字段被创建为一个readonly字段,在很多情况下我不想创建一个只读字段。

readonly int my_int;

如何告诉 ReSharper 不要添加使我的字段只读?我试图在 ReSharper 选项中进行非常彻底的搜索,但显然我遗漏了一些东西!

4

3 回答 3

4

我也找不到任何更改创建默认值的选项;但是,如果您允许 R# 随意创建此字段(即readonly),然后键入以下内容:

public void Bar(int baz)
{
    my_int = baz;
}

那么分配 tomy_int将得到一个红色波浪下划线,因为它是非法的,并且在该位置提供的快速修复(Alt+ Enter)将是Make field 'my_int' non-readonly.

因此,本着“代码优先”的精神,您可能只想让 R# 做它的事情,并在您实际需要更改时使用它来更改它(当然这可能永远不会...... )

于 2010-08-25T20:32:37.090 回答
2

字段创建被硬编码为在创建时只读。这个想法是您正在创建一个字段,因此它没有任何默认使用最严格的用法,如果您尝试在其他地方写入它,您可以在此时 alt+enter 并删除只读状态。如果该字段已存在,ReSharper 将尝试从参数初始化现有字段。

如果您愿意,您可以编写一个插件来将该字段生成为非只读的。您应该查看IntroduceFieldFixdotPeek 中的类。它有几个构造函数,将快速修复绑定到警告波浪线,它将使用当前语言的默认模式引入一个字段(硬编码为“ private readonly $0 $1;”)

您可以创建一个也派生自 的类InitializeFieldFix,并包含一个UnusedParameterWarningBase作为参数的构造函数。然后,您可以遵循与 相同的实现IntroduceFieldFix,但为字段创建提供不同的模式,首先检查当前语言。

于 2013-10-25T10:15:53.027 回答
2

另一种选择可能是改用“引入字段”重构。调用它的最佳方法是在参数声明中使用“Refactor This”(Ctrl++ ShiftR,并从减少的重构选项中选择“Introduce Field”。默认情况下,它将生成可写字段,但也可以选择更改修饰符。

于 2014-05-24T05:49:53.120 回答