考虑以下两个从接口实现一堆属性的类:
接口代码:
public interface ISample
{
int x;
string y;
}
Run Code Online (Sandbox Code Playgroud)
第1类:
public class SampleA: ISample
{
public int x { get; set; }
public string y { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
第2类:
public class SampleB: ISample
{
public int x { get; set; }
[Decorated]
public string y { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这里唯一的区别是SampleB有一个属性装饰的属性.
这是高度简化的,并且所讨论的类具有更多属性,但主要区别是一个类具有一些用属性装饰的属性.
将来会有一些情况会引入更多类来实现ISample接口,并且觉得这些类可能应该从抽象类或其他东西继承一些公共代码.
重构此代码的好方法是什么?
尝试这个解决方案:如果你想在带有属性的derrived类中装饰其中的一些属性,那么Sample类中的所有属性都将是它们.virtualoverride
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; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |