Как автоматически скопировать объявление свойства в базовый класс

У меня есть собственность A во всех подклассах базового класса Base,
Как я могу создать абстрактное определение свойства свойства A в базовый класс Base?

Я знаю, что ReSharper рефакторинг Pull Members Up, но это перемещает свойство в базовый класс.

Мне нужно абстрактное свойство в базовом классе и переопределяющие свойства во всех подклассах. Есть ли рефакторинг в Visual Studio или ReSharper, который может сделать это автоматически для меня?

3 ответа

Решение

Для этого в диалоговом окне ReSharper Pull Members Up есть флажок "Сделать абстракцию":

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;
    }
}

Я надеюсь, что это будет полезно для вас.

Я не уверен, что Resharper может двигаться вверх и автоматически создавать абстракцию, как вы хотите, но вы можете, по крайней мере, определить ее вручную, как это

В абстрактном классе:

public abstract double A
{
    get;
}

В подклассе:

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

Это может быть более понятный дизайн для определения нового интерфейса (или использования существующего) и определения свойства в интерфейсе. Таким образом, ваши существующие подклассы не будут использовать override,

Другие вопросы по тегам