Bei den folgenden Typen implementiert und Code-Schnipsel:hinzufügen B <A<object>> zur Liste, wobei B A mit einem Wert Typ
interface IFoo<out T> {
T doThing();
}
class Bar : IFoo<int> {
int doThing() => 0;
}
var list = new List<IFoo<object>> {
new Bar() //fails to compile
};
Ich verstehe, dass es nicht möglich ist, ein Bar
zu einem List<IFoo<object>>
hinzuzufügen, weil Bar
‚s T
ist ein Werttyp.
Gegeben, dass ich IFoo
Typ-Safe, wie kann ich Bar
oder die Sammlung ändern, so dass es möglich ist, sowohl IFoo<T>
für einige Wert und Referenztypen zu speichern?
Wie wollen Sie die Sammlung benutzen? –
@ GuruStron nur für den Zugriff auf die 'DoThing'. Offensichtlich wäre es unsicher, ein Element mit einem bestimmten Typargument daraus zu extrahieren. Typ-Sicherheit auf "IFoo" ist reserviert für Orte, die sie direkt manipulieren, ich bin in Ordnung mit dem Verlust dieser Sicherheit, sobald es in der Sammlung gespeichert ist. – Kroltan