Können Sie eine generische Klasse mit einer bestimmten typisierten Klasse unterordnen?
Ich habe eine generische Klasse mit einer Unterklasse, die bestimmte Typen bereitstellt.
public abstract class GenericBase<T>
where T:Interface1
{
}
Ich untergeordnete die Generika mit bestimmten Implementierungen:
public class Customer:
GenericBase<Type1>
(Type1
implementiertInterface1
).
Ich habe eine andere abstrakte Basisklasse, die einen Verweis darauf hat:
protected GenericBase<Interface1> genericInstance;
Finally, wenn ich versuche, die genericInstance einer Instanz der Basisklasse zuzuweisen, erhalte ich einen Compilerfehler, der besagt, dass "Customer nicht implizit in GenericBase <Interface1> konvertiert werden kann".
base.genericInstance = new Customer(); //Compiler error
Ich verstehe nicht, warum ich diesen Fehler bekommen würde, wennCustomer
ist ein Subtyp vonGenericBase<Type1>
, undType1
implementiertInterface1
. Ist nichtCustomer
effektiv eine Art vonGenericBase<Interface1>
, wenn es eine Unterklasse von @ iGenericBase<Type1>
?
Ich nehme an, ich verstehe hier etwas über Generika falsch; Gibt es eine Möglichkeit, dieses Verhalten zuzulassen?