C#继承混合/匹配

时间:2014-02-12 23:19:01

标签: c# inheritance

假设我有以下课程:

public class A
{
    public string a {get; set;}
}

public class B
{
    public int b {get; set;}
}

public class C
{
    public DateTime {get; set;}
}

......等等。如果我有多重继承,我能做的是:

public class AC : A, C {}
public class BD : B, D {}
public class ACD : AC, D {}

...其中子类将继承父类的属性。假设这种情况只涉及属性,并且没有重复的属性。在C#中,没有多重继承这样的东西,所以我的上面的符号不起作用。我也知道接口不会给我任何东西,因为接口只需要实现类实现属性(我们的实际问题中的属性都有注释,也不能放在接口中)。

目前,我们通过将继承串起来解决问题,但我们想要更灵活的东西。我们能想到的唯一另一种选择是复制/粘贴(显然不是最佳的)。解决这个难题的任何战略思路?

2 个答案:

答案 0 :(得分:1)

尝试编写类,以便新类具有类A的属性,类B的属性,等等。

你可以更进一步,使作曲课的逻辑成为组合课的外观。

这里有很多关于它的帖子:https://stackoverflow.com/a/53354/685341

答案 1 :(得分:0)

您有三个选项,具体取决于您尝试使用多重继承实现的目标:

  1. 使用接口,在抽象基类上实现接口。通过适当地使用普通的OO模式(即正确使用基本实现和抽象属性来强制扩展类来执行),您可以通过此选项获得多数继承的方法。

  2. 组合物。创建一个包装所需子(基)类的类。您不必包装所有子类,您仍然可以使用继承来实现一些类定义。在这种情况下,类AC可以扩展(继承自)A并包装C

  3. 使用界面和组合的混合

  4. 前两个都不是一个非常干净的解决方案,两者都可以帮到你。实际情况是,在您真正需要多重继承的情况下,当您这样做时,选项3应该完成它。