2009-06-12 8 views
2

Je suis en train d'utiliser la réflexion pour créer une matrice d'objets du type créé de la réflexion comme le folowing:C# objet de réflexion [] question

Client[] newArray = new Client[] {client1, client2}; 

Je dois obtenir en quelque sorte le type d'objet Client pour créer l'objet de manière ça peut être passé.

Toute aide serait grandement appréciée.

Cheers, Rob

object clientObject = testAssembly.CreateInstance(".Testing_Automation.Client");   
Type client = testAssembly.GetType(".Testing_Automation.Client"); 

// Create Client Object Array 

Passage à:

public Appointment(IEnumerable<Client> client, string time) 
+0

Il est difficile de convertir un type que vous ne connaissez pas au moment de la compilation. La conversion IEnumerable sera la plus délicate à effectuer. –

Répondre

6

Vous devez utiliser la méthode Array.CreateInstance:

Array arr = Array.CreateInstance(client, lengthOfArray); 
arr.SetValue(client1, 0); // Fill in the array... 
arr.SetValue(client2, 1); 

Pour obtenir un IEnumerable<Client> du tableau, vous pouvez utiliser (IEnumerable<Client>)arr si vous connaissez le Client tapez au moment de la compilation. Si vous ne le faites pas, ce qui est probable, vous devriez poster plus d'informations sur les possibilités de cet appel de méthode.