2012-01-26 16 views
7

Można utworzyć tablicę dynamicznie:Dynamicznie utworzyć tablicę i ustawić elementy

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

Ale w jaki sposób ustawić pierwszy element tablicy, który jest tworzony powyżej?

Odpowiedz

12

Można użyć 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

można po prostu użyć słowa kluczowego dynamic aby kod był bardziej czytelny niż refleksji wzywa:

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