我在基类A
的所有子类中都有一个属性Base
如何在基类A
中生成属性Base
的抽象属性定义?
我知道ReSharper的重构拉成员,但将属性移动到基类。
我需要在基类中使用抽象属性,在所有子类中需要覆盖属性。 Visual Studio 或 ReSharper 中是否有可以为我自动自动的重构?
答案 0 :(得分:2)
在ReSharper Pull Members Up对话框中有一个复选框“Make abstract”:
答案 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;
}
}
我希望这会对你有所帮助。