23

最近 R# 7.1 にアップグレードしましたが、To Property With Backing Fieldアクションによってバッキング フィールドが置き換えられ、クラスの先頭に移動するという問題が発生しています。

例:

ステップ 1 : auto プロパティを定義します。

public class MyClass
{
    //... Lots of members here

    public int MyNewProperty {get;set;} // <- Create auto Property
}

ステップ 2 : ReSharper の「バッキング フィールドを持つプロパティへ」

ここに画像の説明を入力

期待される結果:

public class MyClass
{
    //... Lots of members here

    private int _myNewProperty; // <- Backing field immediately above property
    public int MyNewProperty 
    {
       get
       {
           return _myNewProperty;
       }
       set
       {
           _myNewProperty = value;
       }
    }
}

得られた結果:

public class MyClass
{
    private int _myNewProperty; // <- Backing field on top of the class

    //... Lots of members here


    public int MyNewProperty 
    {
       get
       {
           return _myNewProperty;
       }
       set
       {
           _myNewProperty = value;
       }
    }
}

Type Members Layout次のように、「インスタンスフィールド」の部分にコメントを付けて、すでに構成をいじっています。

<!--instance fields-->
<!--<Entry>
       <Match>
            <And>
               <Kind Is="field"/>
               <Not>
                   <Static/>
               </Not>
            </And>
       </Match>
       <Sort>
           <Readonly/>
           <Name/>
       </Sort>
    </Entry>-->

しかし、私はまだ同じ動作をします。

Q:どうすればこの動作を防ぎ、V6.X に戻すことができますか?

4

1 に答える 1

10

これは、 JetBrains開発者からのロシア語のコメントです。この記事は R# 8 リリースに専念しています。彼は、プライベート フィールドを最初に一緒に配置することは、プロパティの近くに配置するよりもはるかに一般的なユース ケースであると述べました。彼は、フィードバック システムでチケットを開くことを勧めました。また、バージョン 8.1 でそのような設定を導入するかもしれないと彼は言いました。
要するに今は無理です。

于 2013-07-25T14:36:25.443 に答える