J'ai une classe abstraite:Comment avoir un type générique hériter d'un type générique
public abstract class LMManager<ENTITY, ILM_ENTITY> where ENTITY : ILM_ENTITY, IActiveRecord, ICallOnCreated, new()
ENTITÉ est une sorte de DataObject, ILM_ENTITY, IActiveRecord et ICallOnCreated sont des interfaces que les implémente DataObject.
En général, je sous-classe ce gars avec des classes quelque chose comme
public class JobManager : LMManager<Job, ILMJob>
public class JobViewManager : LMManager<vwJob, ILMJobView>
Maintenant, j'ai un cas où deux des sous-classes ont un code en commun, donc je veux insérer une autre couche entre les deux, quelque chose comme
public abstract class JobManagerBase : LMManager<ENTITY, ILM_ENTITY>
puis changer les deux autres gars à
public class JobManager : JobManagerBase<Job, ILMJob>
public class JobViewManager : JobManagerBase<vwJob, ILMJobView>
Dans la définition de mon JobManagerBase, je reçois quatre erreurs liées à ENTITÉ:
- doit être un type non abstrait avec un constructeur parameterless publique
- Pas de conversion de boxe ou de conversion paramètre de type de ENTITÉ à ICallOnCreated
- Pas de conversion de la boxe ou le type de conversion paramètre de ENTITÉ à IActiveRecord
- Aucune conversion de boxe ou de type paramètre conversion de ENTITÉ à ILM_ENTITY
Est c'est terriblement évident ce qui me manque?
N'utilisez pas de capuchons. De plus, les paramètres génériques devraient commencer par 'T'. – SLaks
Voulez-vous dire 'JobManagerBase: LMManager '? –
SLaks