考虑以下两个从接口实现一堆属性的类:
接口代码:
cellInfo
第1课:
public interface ISample
{
int x;
string y;
}
第2课:
public class SampleA: ISample
{
public int x { get; set; }
public string y { get; set; }
}
唯一不同的是public class SampleB: ISample
{
public int x { get; set; }
[Decorated]
public string y { get; set; }
}
有一个属性用属性装饰。
这是高度简化的,所讨论的类有更多属性,但主要区别是一个类有一些属性装饰的属性。
将来会出现一些情况,会引入更多类来实现SampleB
接口,并觉得这些类可能应该从抽象类或其他东西继承一些公共代码。
重构此代码的好方法是什么?
答案 0 :(得分:5)
尝试此解决方案:Sample
类的所有属性都为virtual
,如果您想在带有属性的带有属性的类中装饰其中一些属性,只需override
。
public class Sample
{
public virtual int x { get; set; }
public virtual string y { get; set; }
}
public class SampleA : Sample
{
}
public class SampleB : Sample
{
[Decorated]
public override string y { get; set; }
}