在C#BOL类中正确实现接口

时间:2014-06-24 17:39:49

标签: c# .net

我一直在寻找并找到类似的东西,但没有什么能够解决我的问题。这是 - 我有两个班级。 A,B。我希望C级具有这两个类的所有特性。这是在对象层,c#.net。

A类:

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

public class B
{
  public string anotherproperty { get; set; }
}

public interface IB
{
  B b { get; set; }
}

public class C : A, IB
{
  //nothing here cause hopefully it inherits everything
}

我不知道我的实施是否接近。我收到“C没有实现接口成员IB”的错误消息

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:3)

  

我有两节课。 A,B。我希望C级具有这两个类的所有特性。

...然后你必须手动将A或B的属性添加到C. C#不支持多重继承,抱歉。


但是,在大多数情况下,不需要多重继承。一个常见的替代方法是使用组合而不是继承:例如,您可以让您的类C提供对A和B实例的引用:

public class C
{
    private A a = new A();
    private B b = new B();

    public A A { get { return a; } }
    public B B { get { return b; } }
}

这样您就可以通过myC.A.property1myC.B.anotherproperty访问所有媒体资源。

如果您确实需要合并ABC实施,您可能需要查看Mixin C#的库。

答案 1 :(得分:0)

您可以这样做:

    public class ClassA
    {
        public string AProp { get { return "AProp";} }
    }

    public class ClassB : ClassA
    {
        public string BProp { get { return "BProp"; } }
    }

    public class ClassC : ClassB
    {

    }

然后:

ClassC c = new ClassC();
Console.WriteLine(c.AProp);
Console.WriteLine(c.BProp);

打印:

  

AProp

     

BProp

您无法覆盖任何内容,但您可以访问继承的属性。