我有一个已经由基类继承的类,我需要使用另一个抽象类中的某些函数。因为一个类不能继承一个以上的类,所以该怎么做。
public Class ABC : BaseClass, SomeAbstractClass
{
}
需要具有上述功能。有人可以帮我用C#做到这一点。
答案 0 :(得分:1)
不能。与C ++不同,C#不支持多个基类。
您可以做的是继承抽象类,并实现从基类中提取的接口-而不是从基类中继承,而是使用其类型的字段(总之,对继承使用合成) :
public Class ABC : SomeAbstractClass, IBaseClass
{
private IBaseClass _base;
// initialize the IBaseClass in your constructor:
public ABC(int a, string b)
: base(a) // assume a constructor that takes an int on the abstract class
{
_base = new BaseClass(b); // assume a constructor that takes a string on the base class
}
// or a constructor for Dependency Injection:
public ABC(int a, IBaseClass baseClass)
: base(a)
{
_base = baseClass;
}
// implement the interface like this:
public int SomeIBaseClassMethod(string a, int b)
{
return _base.SomeBaseClassMethod(a, b);
}
public bool IsValid
{
get {return _base.IsValid;}
set {_base.IsValid = value}
}
}
答案 1 :(得分:0)
C#不支持多重继承。您可以做的是实现不同的接口。
public class ABC: BaseClass, ISomeOtherInterface {
}