2012-01-26 16 views
7

Questo può creare un array dinamico:creare dinamicamente un array e impostare gli elementi

Assembly asm = object.GetType().Assembly; 
string sTypeName = "Company.Namespace.ClassName"; 
object arrayWithSize1 = Activator.CreateInstance(asm.GetType(sTypeName), 1); 

Ma come impostare il primo elemento della matrice che si crea sopra?

risposta

12

È possibile utilizzare Array.SetValue:

// How are you going to create this? Activator.CreateInstance? 
object instance = ... 

// Create one-dimensional array of length 1. 
Array arrayWithSize1 = Array.CreateInstance(asm.GetType(sTypeName), 1); 

// Set first (only) element of the array to the value of instance. 
arrayWithSize1.SetValue(instance, 0); 
7

si può semplicemente utilizzare la parola chiave dynamic per rendere il codice più leggibile di riflessione chiama:

var arrayType = typeof(int); 
dynamic array = Array.CreateInstance(arrayType, 1); 
array[0] = 123;