Generische abstrakte Basis-Klasse von der Generischen Schnittstelle
Ich versuche zu verstehen, was die Hierarchie wäre das beste für die Vererbung wie folgt beschrieben. Bisher habe ich wie folgt:
public interface IManager<T> where T : ISomeObject
{
bool Add(T o);
bool Remove(T o);
bool Update(T o);
}
Aber dann wollte ich die einzelnen abgeleiteten Klassen haben eine parametrierten Konstruktor. Also ging ich:
public abstract class Manager<T> : IManager<T> where T : ISomeObject
{
protected readonly INeededObject obj;
protected Manager(INeededObject o)
{
obj = o;
}
}
Irgendwelche Ideen auf, wie soll ich über das design-Problem? Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist fast da. Sie können die Verwendung generischer Typ-Parameter in der Basisklasse als gut.
Können Sie die Verwendung von parametrisierten Typen auch, wie
T
sowohl ininterface
undabstract class
fühlt sich ein bisschen seltsam und falsch.T
an zwei Orten.T
ist nur ein parameter-Namen - eine Art, wie einer Funktion parameter. Sie können tatsächlich gebenT
alle Namen, die Sie möchten, in beiden Orten, z.B.class Manager<Foo>
.T
ist nur eine Konvention.T
sowohl ininterface
undabstract class
, ist nicht richtig, irgendwo entlang OOD Linien. Ich bin damit einverstanden, dass Ihr einen Weg, das zu tun parametrierten Konstruktor, aber mein edit ist das, was ich suchte (es sei denn, es ist ein Fehler).Vielleicht ein wenig spät in die Nacht "Weisheit rush" (das kann wieder falsch). Aber meine modifizierten Oberfläche um eine nicht-generische man wie folgt:
Und meine abstrakte Klasse sieht wie folgt aus: