Home > Refactorings > Refactorings specific to auto-implemented properties

Refactorings specific to auto-implemented properties

July 12th, 2011

Auto-implemented properties enable you to quickly specify a property without having to write logic for the property accessors. The auto-property’s logic and the field serving as a backing store are automatically generated by the compiler. Such properties appeared in C# version 3.0 and Visual Basic version 10.0.

Refactor! Pro has several refactorings that allow you to convert “full” properties with a backing store field into auto-implemented properties and vice versa. They are Convert to Auto-implemented Property and Create Backing Store.

The Convert to Auto-implemented Property refactoring is available for properties that encapsulate a private field without additional logic inside accessors, for example:

private int _Name;
public int Name
{
  get
  {
    return _Name;
  }
  set
  {
    _Name = value;
  }
}

Show Visual Basic code… »

Private _name As String
Public Property Name As String
  Get
    Return _name
  End Get
  Set(ByVal Value As String)
    _name = Value
  End Set
End Property

The refactoring is available here showing you a preview hint of the resulting code:

Refactor! Convert to Auto-implemented property preview (CS)

Show Visual Basic code… »

Refactor! Convert to Auto-implemented property preview (VB)

After the refactoring is executed, you get a simple auto-implemented property:

public string Name { get; set; }

Visual Basic:

Public Property Name() As String

The refactoring performs the following actions automatically:

  • removes the backing store field for the property;
  • replaces the original property with an auto-implemented property;
  • replaces all field references to references to the new property;

There’s a second version of the refactoring called Convert to Auto-implemented Property (convert all) which does absolutely the same actions, but for all properties in the current type declaration that can to be converted into auto-properties.

The opposite refactoring, called Create Backing Store, converts an auto-implemented property into a full property with a field serving as a backing store. This can be useful if you’d like to add additional logic for one of the property’s accessors. Or, if you’re going to prevent an auto-implemented property from being serialized, because auto-properties don’t support the [NonSerializable] attribute.

Here’s a sample preview hint of the Create Backing Store refactoring:

Refactor! Create Backing Store preview (CS)

Show Visual Basic code… »

Refactor! Create Backing Store preview (VB)

—–
Products: Refactor! Pro, CodeRush Xpress
Versions: 11.1 and up
VS IDEs: any
Updated: Jul/12/2011
ID: R032

Similar Posts: