。net来自抽象类的多重继承

问题描述 投票:10回答:6

可以实现此功能吗?我有两个抽象类,我想强迫第三类来实现这两个类中的所有抽象方法]

public abstract class A
{
    private void MethodA()
    {
        var fool = Prop*2;
    }
    public abstract int Prop { get; }
}
public abstract class B
{
    private void MethodB()
    {
        //.... 
        SomeMethod();
        //....
    }
    public abstract void SomeMethod();
}

public class C: A, B
{
    public int Prop { .... }
    public void SomeMethod { .... }
}

这里的主要问题是,已实现的最终类方法随后在基本抽象类中使用,而这不能通过接口来实现。所以没有解决方法?

我已经阅读了许多类似的问答,但没有任何内容可以解决我的问题。谢谢

.net abstract-class multiple-inheritance
6个回答
10
投票

否,C#不支持多重继承。您可以实现多个接口,但是显然不一样,因为接口无法实现任何具体的行为。


2
投票

您可以通过Mixins在C#中执行此操作,它的实现方式不同于多重继承,但最终您会从多个类中获得具有所有方法的对象。

这不是该语言的功能,但是可以在第三方中找到。

您可以在my answer to this other question上或直接在re-mix's codeplex上阅读它>

一些兴趣点:-您可以在Mixin中覆盖方法,从而从外部修改新创建的类的行为。-您可以创建在范围内创建类别不同的​​范围。-您需要通过工厂创建mixin'd对象(谢天谢地,新的MyObject()不会考虑Mixins)。


1
投票

您是否尝试过使用多个接口?这可能是类似的情况:Multiple derived abstract classes?


1
投票

具体?不可以,因为C#不支持多重继承。


0
投票

如果您愿意在最后一堂课中实现功能,则可以创建接口并实现所需的任意数量...


0
投票

从.NET Core 3.0上的C#8.0开始,C#支持default implementations for Interface members

© www.soinside.com 2019 - 2024. All rights reserved.