我有一节抽象的课:
public abstract class LMManager<ENTITY, ILM_ENTITY> where ENTITY : ILM_ENTITY, IActiveRecord, ICallOnCreated, new( )实体是某种类型的DataObject、ILM_ENTITY、IActiveRecord和ICallOnCreated,是DataObject实现的接口。
通常,我会用类似的类来子类这个家伙
public class JobManager : LMManager<Job, ILMJob>
public class JobViewManager : LMManager<vwJob, ILMJobView>现在,我有一个例子,其中两个子类有一些共同的代码,所以我想在中间插入另一个层,比如
public abstract class JobManagerBase : LMManager<ENTITY, ILM_ENTITY>然后换另外两个人
public class JobManager : JobManagerBase<Job, ILMJob>
public class JobViewManager : JobManagerBase<vwJob, ILMJobView>在我的JobManagerBase的定义中,我得到了与实体相关的四个错误:
ICallOnCreated
的类型参数转换。
很明显我错过了什么吗?
发布于 2010-11-19 17:19:35
您的JobManagerBase尝试在参数ENTITY和ILM_ENTITY中使用LMManager。
由于这些参数不满足您的约束,因此您将得到一个错误。(如果有人做了JobManagerBase<int, string>怎么办?)
您需要向where添加泛型参数和相同的JobManagerBase子句,以确保其参数满足LMManager所需的约束。
https://stackoverflow.com/questions/4227572
复制相似问题