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

Best way for several classes to share the same attributes in C#

我已经看到一些实现此属性共享的方法,从最基本的(每个参数传递属性)到接口(这是迄今为止我发现的最干净的方法),但想知道是否还有其他方法,甚至可能更好,因为我正在重构我的主要 class 并且希望避免长时间再次这样做。

问题如下,我有一个妈妈class,有几个children,但是根据公司的需要,正在创建其他children和一些方法children传给了妈妈,今天妈妈已经有15个属性和60多个方法,可以完美地分为classes.

我的 class 是这些我并不引以为豪的困惑的怪物,所以你应该明白她为什么为重构而哭泣:

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 ...

从外观上看,您的 class 已经被许多其他 class 继承了。

解决巨大 class 并结合继承的最佳方法是避免它。

这两种情况你都会遇到很多问题,如果你有太多基于它的功能 class 你一定要修改它。修改基础 class 将影响所有派生的 classes 并且您将很难跟踪和测试它。再加上共享变量,你就不知道是基class更新了还是派生class更新了

我建议将基础 class 分解为更小的 classes 以获得密切相关的功能。更喜欢组合而不是继承。这将减少您的 member/variable 共享并获得易于管理的代码。