Hinzufügen von Elementen zu ListT mittels Reflektion

7

Ich habe versucht, durch Reflektion Elemente zu IList hinzuzufügen, aber beim Aufruf der "Add" -Methode wurde ein Fehler "object ref. not set" geworfen. Während des Debugging habe ich erfahren, dass GetMethod ("Add") eine NULL-Referenz zurückgegeben hat.

%Vor%

Bitte helfen Sie.

    
AbrahamJP 16.11.2010, 12:18
quelle

3 Antworten

23

Sie versuchen, eine Add -Methode in Type zu finden, nicht in List<MyObject> - und dann versuchen Sie, sie in Type aufzurufen.

MakeGenericType gibt einen Typ und keine Instanz dieses Typs zurück . Wenn Sie eine Instanz erstellen möchten, ist Activator.CreateInstance normalerweise der richtige Weg. Versuchen Sie Folgendes:

%Vor%

(Ich würde auch vorschlagen, dass Sie die Konventionen für Variablennamen befolgen, aber das ist eine separate Angelegenheit.)

    
Jon Skeet 16.11.2010, 12:22
quelle
3
%Vor%

IList.Add (Objektelement); = & gt; Sie können die Add-Methode in der IList-Schnittstelle anstelle von Reflection verwenden.

    
Doctor 16.09.2013 11:17
quelle
0

Sie haben nur einen generischen Typ erstellt, Sie haben keine Instanz des Typs erstellt. Sie haben einen Listentyp, aber Sie haben keine Liste.

Die Variable Result enthält ein Type -Objekt, daher gibt Result.Gettype() dasselbe wie typeof(Type) zurück. Sie versuchen, in der Klasse Add eine Methode Type zu finden, nicht Ihre Listenklasse.

Könnten Sie keine Generika anstelle von Reflektionen verwenden, z. B .:

%Vor%     
Guffa 16.11.2010 12:26
quelle

Tags und Links