使用ReSharper为属性生成只读字段

时间:2013-11-01 16:15:17

标签: c# properties resharper

由于我没有发现ReSharper是否能够为属性生成私有只读备份字段,有没有办法如何定义可以执行此操作的自定义脚本?

想象一下你有一个属性

public Type PropertyName { get; set; }

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

private readonly Type propertyName;

public Type PropertyName { get { return propertyName; } }

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

2 个答案:

答案 0 :(得分:8)

使用R#,您可以创建Live Template。在这种情况下:

  1. ReSharper>模板资源管理器
  2. 实时模板标签>新模板(小网格图标)
  3. Shorcut:propReadOnly(这将是intellisense使用的快捷方式)
  4. 描述:对你有用的......
  5. 可用:在允许类型成员声明的C#2.0中
  6. 将模板创建为:

    private readonly $Type$ $propertyName$;

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

  7. $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”

答案 1 :(得分:2)

您可以使用ReSharper进行相反的工作。

创建私人只读后备字段:

private readonly Type propertyName;

然后按alt + insert生成该属性。

另见:Generating Properties

修改

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

public MyProperty PropertyName { get { return propertyField;  } }

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