Ich habe gerade ein Spiel mit dem Schreiben eines ORM-Projekt in C#.Aufrufen einer generischen Methode, die eine Sammlung von Generika zurückgibt, ohne zu wissen, was der Typ ist? C#
Grundsätzlich habe ich eine Klassenstruktur wie folgt aus:
IDBOperation --- DBReadOperation
DBOperationPool
Grundsätzlich ein DBReadOperation Karten Daten aus der angegebenen Datenbanktabelle zu einer Klasse in meiner Lösung sagen wir zum Beispiel PersonDetails.
Der Code, um dies zu tun, wurde von einer externen Quelle (kann nicht ganz erinnern?), Und im Grunde genommen eine generische Sammlung (Sammlung) zurückgegeben.
Mein DBOperationPool muss in der Lage sein, eine beliebige Anzahl von DBReadOperations zu übernehmen und Ergebnisse für jede von ihnen zu liefern. Die Logik dafür habe ich unten .. aber kann nicht scheinen, um den Code zu arbeiten?
Die Mapping-Klasse auf Generika auch .. so gebaut, wie kann ich die Mapping-Klasse instanziiert von ..
MappingClass<?> mappingInstance = new MappingClass<?>();
Collection<?> returnedCollection = mappingInstance.MapData(argument);
Wie kann ich nach dem Vorbild sein (unter Verwendung von Generika, oder Reflexion, oder irgendetwas) herauszufinden, wo die Fragezeichen in den oben genannten sind? Kann es gemacht werden? Ich habe eine Suche herum und nichts scheint zu diesem genauen Problem verwandt zu sein.
Offensichtlich macht die einfache Route den Pool mit dem Typ, den ich in Richtung Karte zuordnen möchte .. aber der ganze Punkt des Pools ist dass ich DBReadOperation für zB PersonDetails, CompanyDetails usw. dorthin werfen kann, und die Daten dort, wo sie benötigt werden, zugeordnet werden und die Ergebnisse für jeden Typ korrekt zurückgeben. Mit dieser Route kann ich eine beliebige Anzahl von DBReadOperations in einen Pool werfen, solange sie sich mit einem bestimmten Typ für jede DBOperationPool-Instanz beschäftigen. Aber das ist nicht das, was ich will.
Macht das überhaupt Sinn?
Grüße,
Simon
Vielleicht Objekt als Generika Typ Argument und dann Casxing zu was auch immer Sie brauchen? (Es ist eine Art von tötet das Konzept der Generika, aber es sollte funktionieren) – Machinarius