如何自动将属性声明复制到基类

时间:2012-07-13 11:36:55

标签: c# visual-studio-2010 resharper resharper-5.1

我在基类A的所有子类中都有一个属性Base 如何在基类A中生成属性Base的抽象属性定义?

我知道ReSharper的重构拉成员,但属性移动到基类。

我需要在基类中使用抽象属性,在所有子类中需要覆盖属性。 Visual Studio ReSharper 中是否有可以为我自动自动的重构?

3 个答案:

答案 0 :(得分:2)

在ReSharper Pull Members Up对话框中有一个复选框“Make abstract”: enter image description here

答案 1 :(得分:0)

我不确定Resharper可以自动向上移动并创建一个抽象,但你可以像这样手动定义它

在抽象类中:

public abstract double A
{
    get;
}

在子课程中:

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

定义新接口(或使用现有接口)并在接口中定义属性可能是一种更清晰的设计。这样,您现有的子类就不必使用override

答案 2 :(得分: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;
    }
}

我希望这会对你有所帮助。