c# - 自动递增抽象基类的 typeid
问题描述
所以我有一个Dictionary<Type, ...>
已经成为一个紧密循环的瓶颈。我想取消使用Type
作为密钥。我很幸运,所有最终在该字典中作为键的类型都实现了一个我可以更改的特定接口,我想我想将它更改为抽象基类。
我认为我最终想要做的是有这样的事情:
public abstract class MyBaseType
{
public virtual int TypeId { get; }
}
然后我会以某种方式让这个自动增加 TypeId 的派生类。这可能以自动方式进行吗?所以我不必为每个人专门设置一个数字?
我试图避免的事情:
public class MyDerived : MyBaseType
{
public override int TypeId => 0;
}
public class MyDerived2: MyBaseTYpe
{
public override int TypeId => 1;
}
...etc
有任何想法吗?
编辑:这是导致我的瓶颈的类型查找。将其更改为一种类型除了Type
实际上会给我带来任何好处吗?有没有可能是因为我一GetHashCode()
开始就遇到了瓶颈?Type
解决方案
我最终做了(非常重复的)工作以将密钥降低到 int 并且速度并没有提高那么多。这告诉我的是,我只是对我正在执行的工作的成本抱有不切实际的期望。我将研究线程作为查看改进的替代方法。
推荐阅读
- android - 绑定和cast问题。我如何将editText转换为可编辑?
- vue.js - VueJS:“Access-Control-Allow-Origin”标头的值不等于提供的原点
- java - 尽管配置正确且日志中没有错误消息,但 Hibernate 未创建表
- django - Heroku 在使用 Procfile 运行 Django 时返回 desc="No web processes running"?
- c# - 返回 View("viewname", model) 时视图不呈现
- git - Git 推送错误 RPC 失败 curl 52 GnuTLS recv 错误 (-110)
- android - 我无法导入 PhotoView。我该怎么办?
- inheritance - 领域驱动设计 - 继承指南
- android - 选项卡布局或底部导航视图的所有片段的通用搜索视图?
- python - 在不同的结束目录创建文件夹