5

由于我没有发现 ReSharper 是否能够为属性生成私有只读支持字段,有没有办法定义可以做到这一点的自定义脚本?

想象一下你有一个财产

public Type PropertyName { get; set; }

然后在这一行上设置一个光标,按 Alt+Enter 会有一个菜单项将属性转换为

private readonly Type propertyName;

public Type PropertyName { get { return propertyName; } }

我发现自己处于实际上会多次使用它的情况。

4

2 回答 2

8

使用 R#,您可以创建实时模板。在这种情况下:

  1. ReSharper > 模板资源管理器
  2. 实时模板选项卡 > 新模板(小网格图标)
  3. 快捷方式:propReadOnly(这将是与智能感知一起使用的快捷方式)
  4. 描述:任何适合你的...
  5. 可用:在 C# 2.0 中允许类型成员声明
  6. 将模板创建为:

    private readonly $Type$ $propertyName$;

    public $Type$ $PropertyName$ { get { return $propertyName$; } }

包含文本$SomeText$将指定该文本作为 R# 操作的变量。

在变量名面板中:

Name             Value             Editable Occurence
Type             Choose Macro*     #2
PropertyName     Choose Macro*     checkbox is checked
propertyName     (see below)       not editable
                 Macro > - Value of annother variable with the first character in lower case
                         - Select "PropertyName" as the other variable

*Choose Macro is displayed when no macro is selected; this is the default setting

保存,您可以通过键入使用的快捷方式立即在 Visual Studio 中使用模板,即“propReadOnly”

于 2013-11-01T18:51:49.053 回答
2

你可以反过来用ReSharper.

创建您的私有只读支持字段:

private readonly Type propertyName;

然后按alt + insert生成属性。

另请参阅:生成属性

编辑:

另一种选择是首先创建一个这样的属性:

public MyProperty PropertyName { get { return propertyField;  } }

然后alt + enter将光标按在 fieldName 上以创建该字段。然后您将跳转到该字段并alt + enter再次按下Resharper将使其成为构造函数参数。最后但并非最不重要的一点是,您现在可以选择alt + enter再次按下以使该字段只读。

于 2013-11-01T16:20:36.627 回答