Resharper でバッキング フィールドを使用してプロパティを作成するにはどうすればよいですか?
これは、クラスで最初にやりたいことですが、その方法がわかりません。
とてもシンプルです。
Resharper でバッキング フィールドを使用してプロパティを作成するにはどうすればよいですか?
これは、クラスで最初にやりたいことですが、その方法がわかりません。
とてもシンプルです。
の本体内でclass
、タイプprop
してヒットしTabます。プロパティのタイプと名前を指定します。これにより、自動プロパティが作成されます (最近では、通常、これらのいずれかを作成する必要があります)。
次に、カーソルをプロパティ名の上に置き、Alt+Enterを押して を選択しますTo property with backing field
。
私が見つけた最も簡単な方法は、プロパティが既に存在するかのように入力することです。
this.MyProperty = "hello";
次に、プロパティ名で Alt-Return を選択し、Create Property 'MyProperty' を選択してから、Tab キーを押して、自動プロパティ、管理されたバッキング フィールド、または既定のメンバー ボディから選択します。
prop
これは、ショートカットを使用してタブを押し、プロパティの種類を指定し、タブを 2 回押して名前を指定し、プロパティ名で Alt-Return を押して「バッキング フィールドのあるプロパティへ」を選択するよりも速いと思います。
ライブ テンプレートを作成して、作業を少し減らすこともできます。たとえば、次のようになります。
/// <summary>
/// Private backing field for $Property$ property
/// </summary>
private $Type$ $BackingField$;
public $Type$ $Property$
{
get
{
return this.$BackingField$;
}
set
{
this.$BackingField$ = value;
}
}
パラメータ $BackingField$ は、テンプレート エディタの「最初の文字を小文字にする」マクロを使用し、それを「編集不可」に設定することで、$Property$ から自動的に生成できます。
しかし、最初の方法が最も速くて簡単だと思います。
getter と setter を持つプロパティが既にある場合、現在のクラスの基本クラスを変更したか、他の変更を行ったために、使用したバッキング フィールドが使用できなくなることがあります。たとえば、以下のプロパティでは、継承されたクラスからLinesMax
バッキング フィールドを使用できます。Height
public int LinesMax
{
get { return ConvertValGet(AdjustMetricEnum.Height, Height); }
set { Height = ConvertValSet(AdjustMetricEnum.Height, value); }
}
上記のコードが機能するが、後で Height プロパティを公開するクラスを継承しないことにした場合、IDE で 2 つの Height 変数名が赤くなり、コードで使用できなくなったことを示します。
その時点で、プライベート バッキング フィールドを作成したいと思うかもしれません。これを簡単に作成するには、最初に高さの名前を _height に変更し、カーソルをいずれかの _height の名前の上に置き、Alt-Enter キーを押して、[Create field '_height'] を選択します。バッキングフィールドが作成されます。