2017-03-28 1 views
1

J'ai créé une classe en cours d'exécution en utilisant la réflexion. J'ai besoin de créer une collection List de mon type de réflexion. Comment faire ça ?Liste avec classe créée en réflexion

MyClassBuilder MCB = new MyClassBuilder("ReportRecord"); 
var myclass = MCB.CreateMyProperty(myTable.Columns); 
Type TP = myclass.GetType(); 
var myObject = Activator.CreateInstance(TP); 
List<dynamic> ccc = new List<dynamic>(); 

Dans le code ci-dessus j'ai créé une classe "ReportRecord". J'ai besoin de créer une collection de ReportRecord List.

Répondre

3
var listType = typeof(List<>).MakeGenericType(TP); 
var list = (IList)Activator.CreateInstance(listType); 
cependant

Notez que ce n'est pas un List<dynamic>; ce n'est pas comme ça que fonctionne la "variance". Vous pouvez cependant, traiter les éléments individuels comme dynamic si cela vous convient:

foreach(dynamic item in list) {...} 
+1

Vous n'êtes plus qu'à trop vite ;-) –

+0

MyClassBuilder MCB = new MyClassBuilder ("ReportRecord"); var myclass = MCB.CreateMyProperty (myTable.Columns); Type TP = myclass.GetType(); var myObject = Activator.CreateInstance (TP); Liste ccc = new Liste (); J'ai besoin de List . La dynamique ne fonctionnera pas dans mon cas. – user3771120

+1

@ user3771120 euh - n'est-ce pas déjà dans la question? –