几个类在C#中共享相同属性的最佳方式

时间:2017-01-10 13:36:07

标签: c# class inheritance methods multiple-inheritance

我已经看到了一些方法来进行这种属性共享,从最基本的(每个参数传递属性)和界面(到目前为止我发现的最干净的方式),但是我想知道是否有其他方法,甚至更好,这样做,因为我正在重构我的主要课程,并希望避免长时间再次这样做。

问题如下,我有一个有几个孩子的母班,但是根据公司的需要,正在创建其他孩子,并且一些孩子的方法被传递给母亲,而今天母亲已经有了15个孩子。属性和更多60种可以完美划分为类的方法。

我的课程是这些迷茫的怪物,我并不为此感到骄傲,所以你应该理解她为什么要为重构而哭泣:

public class A
{
    protected Form myForm = new Form();
    protected WebBrowser myBrowser = new WebBrowser();

    protected List<ComplexType1> List1 = new List<ComplexType1>();
    protected List<ComplexType2> List2 = new List<ComplexType2>();
    protected List<ComplexType3> List3 = new List<ComplexType3>();
    protected List<ComplexType4> List4 = new List<ComplexType4>();

    protected ComplexType5 myData;
    //  And more attribute ...

    public A() {    }   
    protected virtual void Method1() {}
    protected virtual void Method2() {}
    protected virtual void Method3() {}
    protected virtual void Method4() {}
    protected virtual void Method5() {} 

    //  And more and more methods ...
}

public class B : A
{
    protected ComplexType6 anotherData;

    public B() : base() {}
    protected override void Method3() {}
    protected override void Method4() {}
    protected virtual void Method6() {}
}

public class C : A
{       
    public C() : base() {}
    protected override void Method1() {}
    protected virtual void Method6() {}
    protected virtual void Method7() {}
}

//  And more and more child classes ...

1 个答案:

答案 0 :(得分:1)

从它的外观来看,你有一个很棒的类,它被许多其他类继承。

解决一个庞大的类并加上继承的最佳方法是避免它。

这两种情况都会遇到很多问题,如果你的基类功能太多,你必须修改它。修改基类将影响所有派生类,您将难以跟踪和测试它。与共享变量结合使用,您将不知道基类是否更新了它或派生类是否更新了它。

我建议将基类分解为更小的类,以实现密切相关的功能。更喜欢继承的组合。这将减少您的成员/变量共享并具有可管理的代码。