1

A基本クラスのすべてのサブクラスにプロパティがありますBase
プロパティの抽象プロパティ定義Aを基本クラスに生成するにはどうすればよいBaseですか?

ReSharper のリファクタリングPull Members Upを知っていますが、それはプロパティを基本クラスに 移動します。

基本クラスに抽象プロパティが必要で、すべてのサブクラスにオーバーライドプロパティが必要です。Visual StudioまたはReSharperに自動的に実行できるリファクタリングはありますか?

4

3 に答える 3

2

ReSharper Pull Members Up ダイアログには、そのためのチェックボックス「Make abstract」があります。 ここに画像の説明を入力

于 2012-07-13T11:43:20.827 に答える
0

Resharper が上に移動して、必要に応じて自動的に抽象化を作成できるかどうかはわかりませんが、少なくともこのように手動で定義することはできます

抽象クラス:

public abstract double A
{
    get;
}

サブクラスで:

public override double A
{
    get
    {
        return 3.141;
    }
}

新しいインターフェイスを定義して (または既存のものを使用して)、インターフェイスでプロパティを定義する方が明確な設計になる場合があります。そうすれば、既存のサブクラスで を使用する必要がなくなりますoverride

于 2012-07-13T11:41:23.450 に答える
0
public interface IInterface {
    string MyProperty { get; }
}

public class Class : IInterface {
    public string MyProperty { get; set; }
}


public abstract class AbstractClass {
    public abstract string Value { get; }
}

public class ConcreteClass : AbstractClass {

    private string m_Value;
    public override string Value {
        get { return m_Value; }
    }

    public void SetValue(string value) {
        m_Value = value;
    }
}

これがお役に立てば幸いです。

于 2012-07-13T11:43:58.057 に答える