Dynamically create an array and set elements

This can create an array dynamically:

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

But how to set the first element of the array that was created above?

+7
source share
2 answers

You can use 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); 
+12
source

You can simply use the dynamic keyword to make the code more readable than reflection calls:

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

All Articles