重构公共代码的最佳方法

tkh*_*007 4 c#

考虑以下两个从接口实现一堆属性的类:

接口代码:

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接口,并且觉得这些类可能应该从抽象类或其他东西继承一些公共代码.

重构此代码的好方法是什么?

Sla*_*nov 5

尝试这个解决方案:如果你想在带有属性的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)