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

Templates 如何从泛型类型继承泛型类型,templates,c#-3.0,Templates,C# 3.0,我有一个抽象类: public abstract class LMManager<ENTITY, ILM_ENTITY> where ENTITY : ILM_ENTITY, IActiveRecord, ICallOnCreated, new( ) 公共抽象类LMManager,其中实体:ILM\u实体、IActiveRecord、iCalOnCreated、new() 实体是某种数据对象,ILM_实体、IActiveRecord和ICallOnCreated是数据对象实现的接

我有一个抽象类:

public abstract class LMManager<ENTITY, ILM_ENTITY> where ENTITY : ILM_ENTITY, IActiveRecord, ICallOnCreated, new( )
公共抽象类LMManager,其中实体:ILM\u实体、IActiveRecord、iCalOnCreated、new()
实体是某种数据对象,ILM_实体、IActiveRecord和ICallOnCreated是数据对象实现的接口

通常,我会用类似这样的类来给这个家伙分类

public class JobManager : LMManager<Job, ILMJob>
public class JobViewManager : LMManager<vwJob, ILMJobView>
public abstract class JobManagerBase : LMManager<ENTITY, ILM_ENTITY>
公共类作业管理器:LMManager
公共类作业视图管理器:LMManager
现在,我有一个例子,其中两个子类有一些共同的代码,所以我想在它们之间插入另一层,比如

public class JobManager : LMManager<Job, ILMJob>
public class JobViewManager : LMManager<vwJob, ILMJobView>
public abstract class JobManagerBase : LMManager<ENTITY, ILM_ENTITY>
公共抽象类JobManagerBase:LMManager
然后把另外两个人换成

public class JobManager : JobManagerBase<Job, ILMJob>
public class JobViewManager : JobManagerBase<vwJob, ILMJobView>
公共类JobManager:JobManagerBase
公共类JobViewManager:JobManagerBase
在JobManagerBase的定义中,我得到了与实体相关的四个错误:

  • 必须是具有公共无参数构造函数的非抽象类型
  • 未创建从实体到iCalOnCreated的装箱转换或类型参数转换
  • 没有从实体到IActiveRecord的装箱转换或类型参数转换
  • 没有从实体到ILM\u实体的装箱转换或类型参数转换

  • 我缺少的是非常明显的吗?

    您的
    JobManagerBase
    尝试将
    LMManager
    ENTITY
    ILM\u ENTITY
    参数一起使用
    
    由于这些参数不满足您的约束,因此会出现错误。(如果有人创建了一个
    作业管理器数据库
    ?)


    您需要将通用参数和相同的
    where
    子句添加到
    JobManagerBase
    中,以确保其参数满足
    LMManager

    不使用所有CAP所需的约束。此外,通用参数应该以
    T
    开头。您的意思是
    JobManagerBase:LMManager