假设我有以下课程:
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#中,没有多重继承这样的东西,所以我的上面的符号不起作用。我也知道接口不会给我任何东西,因为接口只需要实现类实现属性(我们的实际问题中的属性都有注释,也不能放在接口中)。
目前,我们通过将继承串起来解决问题,但我们想要更灵活的东西。我们能想到的唯一另一种选择是复制/粘贴(显然不是最佳的)。解决这个难题的任何战略思路?
答案 0 :(得分:1)
尝试编写类,以便新类具有类A的属性,类B的属性,等等。
你可以更进一步,使作曲课的逻辑成为组合课的外观。
这里有很多关于它的帖子:https://stackoverflow.com/a/53354/685341
答案 1 :(得分:0)
您有三个选项,具体取决于您尝试使用多重继承实现的目标:
使用接口,在抽象基类上实现接口。通过适当地使用普通的OO模式(即正确使用基本实现和抽象属性来强制扩展类来执行),您可以通过此选项获得多数继承的方法。
组合物。创建一个包装所需子(基)类的类。您不必包装所有子类,您仍然可以使用继承来实现一些类定义。在这种情况下,类AC
可以扩展(继承自)A
并包装C
。
使用界面和组合的混合
前两个都不是一个非常干净的解决方案,两者都可以帮到你。实际情况是,在您真正需要多重继承的情况下,当您这样做时,选项3应该完成它。