Ich bin auf einer abstrakte Klasse zu arbeiten, wo die implementierende Klasse eine Liste von T. implementieren muss Das Problem ist, dass dies nicht funktioniert:Verwendung von Generika in abstrakten Klassen
public class AbstractClass
{
public int Id { get; set; }
public int Name { get; set; }
public abstract List<T> Items { get; set; }
}
public class Container : AbstractClass
{
public List<Widgets> Items { get; set; }
}
Ich bin sicher, dass Es gibt eine offensichtliche Antwort, die ich vermisse, und ich weiß, dass ich einen abstrakten Basistyp erstellen kann, um ihn in die Liste aufzunehmen, aber wenn ich meinen Linq-Befehl zum Erstellen der Liste verwende, wird der abstrakte Typ (ItemBase) nicht abgespielt schön mit der .ToList() Methode. Ist das, was ich versuche, so einzigartig?
Es stellt sich heraus, dass ich lernen muss, besser zu erforschen. Entschuldigung für alle Antworten, die die gleichen waren, die das Häkchen nicht bekommen haben. Ich entschied mich für das Top, das auf seiner Vollständigkeit und der Tatsache, dass es top war, basierte. – thaBadDawg
Möchtest du wirklich, dass Items abstrakt sind? (zB um die Eigenschaften get oder set zu überschreiben?) Wenn Sie von 'AbstractClass' ausgehen, wie die meisten Leute vorschlagen, 'Container.Items werden implizit eine "List " sein, und Sie müssen es nicht einmal überschreiben. –
Tanzelax
Ich möchte die Möglichkeit lassen, dass die Getter- und Setter-Methoden später außer Kraft gesetzt werden. Theoretisch muss ich das nicht, aber in der Praxis führt der Versuch, dieses Chaos rückgängig zu machen, zu einer Welt der Verletzung. – thaBadDawg