我A
在基类的所有子类中都有一个属性Base
。
如何将属性的抽象属性定义生成A
到基类中Base
?
我知道 ReSharper 的重构Pull Members Up,但这会将属性移动到基类。
我需要基类中的抽象属性和所有子类中的覆盖属性。Visual Studio或ReSharper中是否有可以自动为我完成的重构?
我A
在基类的所有子类中都有一个属性Base
。
如何将属性的抽象属性定义生成A
到基类中Base
?
我知道 ReSharper 的重构Pull Members Up,但这会将属性移动到基类。
我需要基类中的抽象属性和所有子类中的覆盖属性。Visual Studio或ReSharper中是否有可以自动为我完成的重构?
在 ReSharper Pull Members Up 对话框中有一个复选框“Make abstract”:
我不确定 Resharper 是否可以自动向上移动并根据需要创建抽象,但您至少可以像这样手动定义它
在抽象类中:
public abstract double A
{
get;
}
在子类中:
public override double A
{
get
{
return 3.141;
}
}
定义一个新接口(或使用现有接口)并在接口中定义属性可能是一种更清晰的设计。这样,您现有的子类就不必使用override
.
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;
}
}
我希望这对你有帮助。