最佳的重构共用代码的方法

4
考虑以下两个类,它们实现了一个接口的许多属性:
接口代码:
public interface ISample
{
    int x;
    string y;
}

一级课程:

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有一个经过属性装饰的属性。

这是高度简化的,涉及的类有更多的属性,但主要区别在于一个类具有一些经过属性装饰的属性。

未来可能会出现更多实现ISample接口的类,并且这些类应该从某个抽象类或其他地方继承一些共同的代码。

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


当我使用DTO(具有许多属性的类)时,我经常放松对DRY的承诺 - 对于我来说,属性的重复不如方法的重复那么重要。 - Rob Lyndon
1个回答

5
尝试这个解决方案:如果你想在派生类中用属性装饰器装饰一些属性,那么Sample类中所有的属性都将是virtual的,只需在派生类中override它们即可。请保留HTML标记。
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; }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接