Ich habe das Problem, dass nach dem Erstellen des Objekts "oListType01" vom Typ List < MyClass01> und nach dem Zuweisen zu dem anderen Objekt "oObjectType" vom Typ "Objekt" kann ich keine weitere Funktion "ElementAt (1)" zugreifen. Ich habe versucht, mit Reflektion, aber ich bekomme immer Ausnahme (Parameterkonflikt) in "Invoke" -Methode. Weiß jemand warum? MilanSo rufen Sie die Erweiterungsmethode "ElementAt" der Liste <T> mit Reflektion auf?
MyClass01 oMy1 = new MyClass01();
oMy1._ID = "1";
MyClass01 oMy2 = new MyClass01();
oMy2._ID = "3";
IList<MyClass01> oListType01 = new List<MyClass01>();
oListType01.Add(oMy1);
oListType01.Add(oMy2);
object oObjectType = new object();
oObjectType = oListType01;
Von hier fowrads nur Objekt oObjectType verfügbar ist (geschieht nach oben in separaten Funktionsaufruf in der realen Fall). In VS oObjectType zeigt zwei Elemente an, auf die ich pro Reflexion zugreifen möchte.
MethodInfo mInfo = typeof(System.Linq.Enumerable).GetMethod("ElementAt").MakeGenericMethod(typeof(object));
object oSingleObject = mInfo.Invoke(oObjectType, new object[] { 1 });
Warum ordnen Sie es einem Objekt überhaupt zu? Wenn Sie aus irgendeinem Grund, und wenn Sie zur Kompilierzeit wissen, welcher Typ, die Liste immer MyClass01-Instanzen enthalten wird, warum werfen Sie es nicht einfach zurück auf eine Liste ((Liste) oObjectType) .ElementAt (1); –
tclem
Bitte schauen Sie sich "answer" an, wo ich erklärt habe, dass in invoke nur der Verweis auf den oObjectType verwendet werden kann (nicht oListType01 und nicht MyClass01). – milan