Ich habe eine Klasse, die WrapperBase<PocoBase>
POCO Objekte wickelt und bietet zusätzliche Funktionalität:Wie kann ich BaseType <any> angeben?
public class WrapperBase<T>
where T : PocoBase
und mehrere Implementierungen oben auf dieser Basisklasse.
public class ButtonWrapper : WrapperBase<Button>
public class ZipperWrapper : WrapperBase<Zipper>
Ich versuche, eine Klasse zu schreiben, die eine WrapperBase<T>
als Konstruktor Parameter übernimmt.
public class ThingDoer
where T : PocoBase
{
public ThingDoer(WrapperBase<T> wrapper)
{
}
}
aber egal was ich versuche, will die ThingDoer
eine Definition für T
:
new ThingDoer<Zipper>(zipperWrapper);
// I don't care what T is... get rid of <Zipper>
Wie kann ich sagen: „Ich interessiere mich nicht, was T
ist, weil all die Funktionalität, die ich will, ist in WrapperBase
"?
Wenn mit Generika arbeiten, müssen Sie sich vorstellen, dass die '' <' and '> sind nur ein Teil des Namens. Stell dir für eine Sekunde vor, dass du deine zwei Klassen als 'public class ButtonWrapper: WrapperBase_Button' und' public class ZipperWrapper: WrapperBase_Zipper' definiert hast, denke noch einmal über deine Frage nach, du kannst 'WrapperBase' nicht einfach machen, weil du keine Klasse hast Mit dem Namen 'WrapperBase' haben Sie zwei Klassen namens 'WrapperBase_Button' und' WrapperBase_Zipper', die überhaupt nichts miteinander zu tun haben, außer dass sie die gleichen ersten 12 Buchstaben in ihrem Namen haben. –