1

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

我知道 ReSharper 的重构Pull Members Up,但这会将属性移动到基类。

我需要基类中的抽象属性和所有子类中的覆盖属性。Visual StudioReSharper中是否有可以自动为我完成的重构?

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 回答