Ich habe eine abstrakte Klasse:Wie eine generische Art haben, erben von einem generischen Typ
public abstract class LMManager<ENTITY, ILM_ENTITY> where ENTITY : ILM_ENTITY, IActiveRecord, ICallOnCreated, new()
ENTITY irgendeine Art von Datenobjekt ist, ILM_ENTITY, IActiveRecord und ICallOnCreated sind Schnittstellen, die das Datenobjekt implementiert.
Typischerweise ich Unterklasse dieser Kerl mit Klassen so etwas wie
public class JobManager : LMManager<Job, ILMJob>
public class JobViewManager : LMManager<vwJob, ILMJobView>
Nun, ich habe einen Fall, in dem zwei der Unterklassen gemeinsam einen Code haben, so möchte ich eine weitere Ebene einfügen dazwischen, so etwas wie
public abstract class JobManagerBase : LMManager<ENTITY, ILM_ENTITY>
und ändern Sie dann die beiden anderen Jungs zu
public class JobManager : JobManagerBase<Job, ILMJob>
public class JobViewManager : JobManagerBase<vwJob, ILMJobView>
In der Definition meines JobManagerBase, bekomme ich vier Fehler ENTITY bezogen werden:
- Muss ein nicht-abstrakter Typ mit einem öffentlichen parameterlosen Konstruktor
- Keine Boxen Wandlungs- oder Typ-Parameter Umwandlung von ENTITY zu ICallOnCreated seine
- Keine Boxen Wandlungs- oder Typ-Parameter Umwandlung von ENTITY zu IActiveRecord
- Keine Boxen Wandlungs- oder Typ-Parameter Umwandlung von ENTITY zu ILM_ENTITY
Ist es ist schrecklich offensichtlich, was ich vermisse?
Verwenden Sie keine Großbuchstaben. Außerdem sollten generische Parameter mit "T" beginnen. – SLaks
Meinst du 'JobManagerBase: LMManager '? –
SLaks