Ich brauche eine generische Schnittstelle wie die verwenden folgende:Funktion, die einen generischen Typ, deren Wert bekannt ist, nur zur Laufzeit
public interface IContainer<T>
{
IEnumerable<IContent<T>> Contents { get; }
}
Eine Aufgabe der Umsetzung dieser Schnittstelle durch eine generische Methode, wie die folgende zurückgegeben:
IContainer<T> GetContainer<T>(IProperty property);
Typ T
ist bis zur Laufzeit unbekannt.
Mit Reflection kann ich die GetContainer<T>
Methode aufrufen und das Ergebnis erhalten.
Mein Problem ist, dass ich nicht weiß, wie man das Ergebnis, das Object
Typ hat (daher kann ich es nicht umwandeln IEnumerable
).
Ich habe auch versucht, wie folgt Gießen, aber es funktioniert nicht (es heißt „Typ erwartet wird“):
var myContainer = genericMethodInfo.Invoke(
myService,
new object[] { property })
as typeof(IContainer<>).MakeGenericType(type);
wo type
der Laufzeittyp ist, myService
ist der Dienst Aussetzen der GetContainer<T>
Verfahren und property
ist vom Typ IProperty
nach Bedarf.
UPDATE: meine komplette Lösung in meinem Blog sehen: http://stefanoricciardi.com/2010/02/18/generics-with-type-uknown-at-compile-time/
möglich Duplikat (http://stackoverflow.com/questions/232535/how- to-use-reference-to-call-generic-Methode) – nawfal