2012-01-26 17 views
7

Esto puede crear una matriz dinámica:crear dinámicamente una matriz y configurar los elementos

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

Pero ¿Cómo establece el primer elemento de la matriz que se crea por encima?

Respuesta

12

Puede utilizar 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

sólo puede utilizar la palabra clave dynamic para hacer el código más legible que la reflexión llama:

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