c# Abstract Generic Class继承自Abstract Generic Class

2024-05-01

我正在尝试创建一个抽象泛型类,它继承自另一个抽象泛型类。

这是我到目前为止所拥有的

public abstract class BaseClass {
    public long Id { get; private set; }

    public BaseClass(long id) {
        this.Id = id;
    }
}

public abstract class BaseClass<T> : BaseClass where T : BaseClass {
    protected BaseClass(long id)
        : base(id) {

    }

    public static T Get(long id) {
        T item;
        return TryGet(id, out item) ? item : default(T);
    }

    public static bool TryGet(long id, out T item) {
        item = null; // This is where I call the cache but for this example I've removed so it will compile
        if (item != null) { return true; }
        else {
            // Call TryGetFallback method
            return false;
        }
    }

    protected abstract T TryGetFallback(long id);
}


public abstract class DerivedClass : BaseClass<DerivedClass> {
    public String Name { get; private set; }

    public DerivedClass(long id, String name)
        : base(id) {
        this.Name = name;
    }
}

public class DerivedDerivedClass : DerivedClass {

    protected override DerivedDerivedClass TryGetFallback(long id) {
        // Handle the try get fallback
    }
}

DerivedDerivedClass 上的 TryGetFallback 方法会导致编译器错误。


首先你需要修复你的BaseClass<T>实现没有递归类型约束。

public abstract class BaseClass<T> : BaseClass where T : new() {
    //snip
}

然后你可以在你的派生类中使用它,例如我将使用它int对于泛型类型参数:

public abstract class DerivedClass : BaseClass<int> {
    //snip
}

现在如果你编译它会警告你'DerivedDerivedClass' does not implement inherited abstract member 'BaseClass<int>.TryGetFallback(long)'

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c# Abstract Generic Class继承自Abstract Generic Class 的相关文章

随机推荐

  • Kafka中如何使用事务以及如何使用abortTransaction?

    我是 kafka 新手 我使用 Kafka Producer Java api 面对Kafka的这个问题 Kafka Invalid transition attempted from state COMMITTING TRANSACTIO
  • 读取pkcs12证书信息

    我在读取证书信息时遇到问题 我想以编程方式在 Android 中使用 java 和 bouncycastle 库来阅读完整信息 现在 我只是在控制台中使用 keytool 命令 gt keytool list keystore 1 p12
  • R: Knit 给出 SQL-chunk 错误

    我想编织 R markdown 的输出 其中包括几个 SQL 块 但是 如果我开始编织 就会收到错误消息 Line 65 Error in eval expr envir enclos object pp dataset not found
  • 使用 OOP 开发 WordPress 插件

    我是插件开发的新手 所以 凡是我说得不对的地方 请大家指正 我有一个网站需要一个具有以下需求的播放器插件 管理员可控的玩家注册表单 其中包含一些详细信息 显示所有注册玩家的列表页面 已注册的玩家可以删除并相互比较 在前端的 WordPres
  • 当 Bool 变量变为 True 时更改标签

    我不太确定如何解释这一点 我将把代码放在伪代码中以便于阅读 我几乎想要一个标签在类的 bool 变量更改时更改其文本 我不确定我需要使用什么 因为我使用的是 WPF 并且该类不能只更改我不更改的标签你不觉得吗 我需要举办某种活动吗 或者 W
  • android 2.2 谷歌地图错误

    我使用 google map api 开发了一个在 android 2 1 上运行良好的项目 但是当我在 android 2 2 上运行相同的项目时 它遇到了一些错误 显示的错误是 Android运行时致命异常 main AndroidRu
  • 无法绑定到“*ngIf”,因为它不是 angular2 中“td”的已知属性

    在我的 Angular 2 应用程序中 在 ts 文件中 我在下面点击了偶数 ViewPages Char string void this selectedPage Char 在html中 我尝试绑定ngif中的选择页面 td name
  • 为什么通过 gmail 的 SMTP 在本地工作但在我的生产服务器上不起作用?

    我正在运行托管在 AWS 爱尔兰 上的 Nodejs 服务器 并使用 emailjs 发送电子邮件 我使用的电子邮件帐户是 gmail 帐户 我可以从本地计算机发送电子邮件 没有任何问题 但电子邮件无法从生产服务器发送 出站防火墙设置为允许
  • Android 如何检查文件是否存在并创建一个?

    我有以下问题 我想将一个名为 data xml 的文件放入 sdcard appname 文件夹中 并使用它来读取和写入应用程序数据 因此 当我的主要活动创建时 我需要检查该文件是否存在 public class appname exten
  • 如何在 Instagram 等应用中使用“@”提及用户

    我正在创建一个具有照片共享功能的应用程序 并且我正在尝试添加提及 或标记 用户的功能 Twitter 最初开始使用 和用户名来标记用户 但现在从 Facebook 到 Instagram 都在使用它 这是iOS端实现的还是后端实现的 我目前
  • 将小数点数字转换为整数 - PowerShell

    我正在编写一个 PowerShell 脚本 它将带小数点的数字转换为整数 val 1024 24 如何将该值转换为整数 我希望它是1024 使用向下取整 四舍五入到较低的整数 Math Floor val 编辑 如果只是丢弃小数部分不是您想
  • 如何使用 Flutter 修复 VSCode 上的自动修复问题?

    我更新了迂腐的软件包并最终出现了 1000 多个问题 其中许多是首选单引号或不必要的等等 只需单击一下即可修复它们 我认为 eslint 或其他一些工具可以在 VSCode 中做到这一点 有没有办法在 Flutter 项目中做到这一点 我找
  • Pandas sklearn one-hot 编码数据帧还是 numpy?

    如何将 pandas 数据帧转换为 sklearn one hot encoded 数据帧 numpy 数组 其中某些列不需要编码 mydf pd DataFrame Target 0 1 0 0 1 1 1 GroupFoo 1 1 2
  • 将 everyauth 与 Restify 结合使用

    我正在尝试使用 everyauth 来处理使用restify 创建的rest api 的身份验证 但却找不到起点 我希望做类似的事情 var restify require restify var everyauth require eve
  • 每次使用 COUNT() 函数,还是存储该值并将其加一?

    我有一个带有用户 投票 表和 用户 表的数据库 我认为数据库会在短时间内变得相当大 所以我想使用最有效的方法 我想我可以每次使用 投票 表中的 WHERE 语句来 COUNT 投票数 或者我可以将分数存储在 用户 表中 每次投票时将其增加
  • C++:ostream 和 ostringstream 有什么区别?

    ostream 和 ostringstream 有什么区别 你什么时候会使用其中一种而不是另一种 简单地说 ostringstream提供了一个streambuf ostream要求用户提供一份 要理解其中的含义 有必要了解一点 流是如何工
  • 当 document.body 长度超过 30,000 像素时,HTML2CANVAS 不会渲染它

    有办法解决这个问题吗 当 document body 高度超过 30 000 像素时 html2canvas 不会呈现 或者我可以只渲染当前视口吗 用户可以看到什么 请帮忙 为了能够仅渲染当前活动视口 您可以使用以下命令初始化 html2c
  • UICollectionViewCell - 内容不会与单元格的 contentView 一起动画

    问题看起来像这样 http i imgur com 5iaAiGQ mp4 https i imgur com 5iaAiGQ mp4 红色是cell contentView的颜色 这是代码 https github com nezhybo
  • Sencha Cmd v4.0.2.67 创建后台进程失败

    我有一个使用 Sencha Command v4 0 2 67 生成的单页 ExtJS 应用程序 我正在尝试使用 Sencha Command v4 0 2 67 和以下命令进行构建 sencha app refresh sencha ap
  • c# Abstract Generic Class继承自Abstract Generic Class

    我正在尝试创建一个抽象泛型类 它继承自另一个抽象泛型类 这是我到目前为止所拥有的 public abstract class BaseClass public long Id get private set public BaseClass