Ich habe ein Objekt vom Typ object
Wer, wenn ich GetType()
darauf aufrufen, gibt einen Typ von HashSet<Availability>
in einem Fall, aber zurück eine nicht verwandte Art von HashSet<Contact>
in einem anderen Fall, oder eine beliebige Anzahl von bis jetzt unbekannten HashSet<...>
Arten.In C# können Sie einen Objekttyp auf eine Sammlungsart von generischen "Objekt" upgraden
object myObject = getMyObject();
myObject.GetType() // = HashSet<Availability>
Ich möchte oben Guss, das Objekt zu einer Sammlung von irgendeiner Art (HashSet oder andere) während des Herunter Gießen der generische Typ der Sammlung zu einem Objekt, so dass der Code nicht die as- wissen muss noch unbekannte Typen zur Kompilierzeit.
object myObject = getMyObject();
myObject.GetType() // = HashSet<Availability>
var myUsefulObject = (HashSet<object>)myObject;
Wenn ich dies versuche, bekomme ich eine Ausnahme "nicht in der Lage zu werfen ...".
Ist das möglich? Wenn ja, wie?
Ich glaube, ich Kovarianz zwischen dem HashSet Typ habe, die ich habe, und das, was ich will, sondern weil mein anfänglichen Typ nur ein Objekt ist, bin ich nicht in der Lage, was this stack-overflow answer suggests zu tun.
* Ist das möglich? * - Nein. Das ist alles ein Traum. Der Compiler sagt Ihnen nicht wirklich, dass Ihre Überzeugungen über Kovarianz falsch sind, und es ist irrelevant, dass das, was Sie tun, zutiefst, grundlegend anders ist als das, was in dieser Antwort steht. –
Angenommen, Sie könnten 'HashSet' auf 'HashSet
Auch, * warum * möchten Sie das tun? Was ist das Endziel? –