如何有一个泛型类型从一个泛型类型
问题描述:
继承我有一个抽象类:如何有一个泛型类型从一个泛型类型
public abstract class LMManager<ENTITY, ILM_ENTITY> where ENTITY : ILM_ENTITY, IActiveRecord, ICallOnCreated, new()
实体是某种数据对象,ILM_ENTITY,IActiveRecord,并ICallOnCreated是该数据对象器具接口。
通常情况下,我继承这个家伙带班像
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
- 从实体没有装箱转换或类型参数转换为IActiveRecord
- 从实体没有装箱转换或类型参数转换为ILM_ENTITY
是这是非常明显的,我失踪了?
答
您的JobManagerBase
尝试使用LMManager
,参数为ENTITY
和ILM_ENTITY
。
由于这些参数不符合您的约束条件,因此会出现错误。 (如果有人让一个JobManagerBase<int, string>
?)
您需要泛型参数和相同where
条款添加到JobManagerBase
,以确保其参数满足要求LMManager
的约束。
+0
我明白了。谢谢! – 2010-11-19 17:41:03
请勿使用全部大写字母。另外,通用参数应该以'T'开始。 – SLaks 2010-11-19 17:20:05
您的意思是'JobManagerBase:LMManager '? –
SLaks
2010-11-19 17:22:43