Как автоматически скопировать объявление свойства в базовый класс
У меня есть собственность 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
,