接口与C#中的多重继承

Sha*_*ank 12 .net c# interface multiple-inheritance

我有一组A类和B类都有一些属性.和另一个有自己特性的C类.

每当我创建一个C类实例时,我想用objClassC访问所有三个类的所有属性.

我怎样才能在C#中实现这一目标?

我面临两个问题: -

  1. 我不能继承C类中的类A,B(C#不支持多重继承)
  2. 如果我使用接口而不是A类,B(在接口中我们不能包含字段)

Hab*_*bib 29

为什么不在C类中包含A类和B类实例.使用Composition

class C
{
//class C properties
public A objA{get;set;}
public B objeB{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

然后你就可以访问了

C objc = new C();
objc.objA.Property1 = "something";
objc.objB.Property1 = "something from b";
Run Code Online (Sandbox Code Playgroud)

看看文章组成与继承

编辑:

如果我使用接口而不是A类,B(在接口中我们不能包含字段)

好吧,接口不能包含字段,如果定义了一个字段,就会出现编译错误.但是接口可以包含属性,但不能指定访问说明符,因为会考虑接口的所有元素public.您可以将接口"A"和"B"的属性定义为:

public interface IA
{
     int Property1 { get; set; }
}


public interface IB
{
    int Property2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在类C中实现它们,如:

public class C : IA, IB
{
    public int Property1 { get; set; }
    public int Property2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

稍后您可以将它们用作:

C objC = new C();
objC.Property1 = 0;
objC.Property1 = 0;
Run Code Online (Sandbox Code Playgroud)