.net - 如何在一个类中同时使用一个基类和一个抽象类
问题描述
我有一个类已经继承了基类,我需要使用另一个抽象类的一些函数。如何做到这一点,因为一个类不能继承多个类。
public Class ABC : BaseClass, SomeAbstractClass
{
}
需要具备以上功能。有人可以帮我在c#中做到这一点。
解决方案
你不能。与 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}
}
}
推荐阅读
- r - 导出 R 列表值
- typescript - d3 v5 scaleThreshold 不接受范围内的字符串颜色数组?
- amazon-web-services - 如何配置 S3 端点以防止访问当前区域之外的存储桶
- reactjs - 用于 Jest 单元测试的模拟 Highcharts(带导出)
- javascript - 如何在不破坏菜单的情况下更改价格大小?
- ios - Xcode iOS 移除框架的权限请求
- python - 不知道为什么路径只存在于while循环的一部分
- api - 在 Flutter 中使用 http 向 API 发出 post 请求
- graphql - 在 apollo graphql 服务器上的单个 api 调用中解决批量查询
- postgresql - postgresql:如何从表的非后续 id 中获取现有 id