2010-11-19 18 views
0

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:

  1. Muss ein nicht-abstrakter Typ mit einem öffentlichen parameterlosen Konstruktor
  2. Keine Boxen Wandlungs- oder Typ-Parameter Umwandlung von ENTITY zu ICallOnCreated seine
  3. Keine Boxen Wandlungs- oder Typ-Parameter Umwandlung von ENTITY zu IActiveRecord
  4. Keine Boxen Wandlungs- oder Typ-Parameter Umwandlung von ENTITY zu ILM_ENTITY

Ist es ist schrecklich offensichtlich, was ich vermisse?

+0

Verwenden Sie keine Großbuchstaben. Außerdem sollten generische Parameter mit "T" beginnen. – SLaks

+0

Meinst du 'JobManagerBase : LMManager '? – SLaks

Antwort

0

Ihr JobManagerBase versucht, LMManager mit den Parametern ENTITY und ILM_ENTITY zu verwenden.
Da diese Parameter nicht Ihren Anforderungen entsprechen, erhalten Sie einen Fehler. (Was passiert, wenn jemand macht ein JobManagerBase<int, string>?)

Sie müssen generische Parameter hinzufügen und die gleiche where Klausel JobManagerBase um sicherzustellen, dass seine Parameter die Einschränkungen, die für LMManager erfüllen.

+0

Ich sehe. Vielen Dank! –

Verwandte Themen