5

Resharper でバッキング フィールドを使用してプロパティを作成するにはどうすればよいですか?

これは、クラスで最初にやりたいことですが、その方法がわかりません。

とてもシンプルです。

4

3 に答える 3

13

の本体内でclass、タイプpropしてヒットしTabます。プロパティのタイプと名前を指定します。これにより、自動プロパティが作成されます (最近では、通常、これらのいずれかを作成する必要があります)。

次に、カーソルをプロパティ名の上に置き、Alt+Enterを押して を選択しますTo property with backing field

于 2012-06-27T09:07:28.870 に答える
7

私が見つけた最も簡単な方法は、プロパティが既に存在するかのように入力することです。

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$ から自動的に生成できます。

しかし、最初の方法が最も速くて簡単だと思います。

于 2012-06-27T08:41:54.850 に答える
0

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'] を選択します。バッキングフィールドが作成されます。

于 2016-11-20T19:01:49.907 に答える