首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从泛型类型继承泛型类型

如何从泛型类型继承泛型类型
EN

Stack Overflow用户
提问于 2010-11-19 17:15:40
回答 1查看 46关注 0票数 0

我有一节抽象的课:

代码语言:javascript
复制
public abstract class LMManager<ENTITY, ILM_ENTITY> where ENTITY : ILM_ENTITY, IActiveRecord, ICallOnCreated, new( )

实体是某种类型的DataObject、ILM_ENTITY、IActiveRecord和ICallOnCreated,是DataObject实现的接口。

通常,我会用类似的类来子类这个家伙

代码语言:javascript
复制
public class JobManager : LMManager<Job, ILMJob>
public class JobViewManager : LMManager<vwJob, ILMJobView>

现在,我有一个例子,其中两个子类有一些共同的代码,所以我想在中间插入另一个层,比如

代码语言:javascript
复制
public abstract class JobManagerBase : LMManager<ENTITY, ILM_ENTITY>

然后换另外两个人

代码语言:javascript
复制
public class JobManager : JobManagerBase<Job, ILMJob>
public class JobViewManager : JobManagerBase<vwJob, ILMJobView>

在我的JobManagerBase的定义中,我得到了与实体相关的四个错误:

ICallOnCreated

  • No

  • 必须是非抽象类型,具有公共无参数构造函数(

  • )、无装箱转换或从实体到装箱的类型参数转换或从实体到IActiveRecord
  1. No装箱的类型参数转换或从实体到ILM_ENTITY

的类型参数转换。

很明显我错过了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-19 17:19:35

您的JobManagerBase尝试在参数ENTITYILM_ENTITY中使用LMManager

由于这些参数不满足您的约束,因此您将得到一个错误。(如果有人做了JobManagerBase<int, string>怎么办?)

您需要向where添加泛型参数和相同的JobManagerBase子句,以确保其参数满足LMManager所需的约束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4227572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档