2009-03-09 9 views
1

J'ai une structure en C# .net. J'ai créé un objet de cette structure. J'ai besoin de lancer cet objet de structure dans ArrayList. J'utilise:Comment transformer un objet/structure en arrayliste?

OrderMessageStructure.OrderMessage orderToModify = new OrderMessageStructure.OrderMessage(); 

object neworderobject = (object)orderToModify; 
ArrayList arr = new ArrayList(); 
arr = (ArrayList)neworderobject; 

Mais je reçois une erreur « Impossible de jeter l'objet de type « OrderMessage » taper « System.Collections.ArrayList ». »

Comment convertir un objet/structure en ArrayList?

+0

Vous cherchez une réflexion (remplir la liste avec chaque membre de la structure) ou vous cherchez à créer un ArrayList de vos objets (en ajoutant les objets aux listes)? – strager

Répondre

2

Votre question n'a pas assez d'informations pour donner une réponse sûre.

Si vous voulez faire un ArrayList d'objets OrderMessage alors vous devez créer le arraylist puis ajouter les instances de OrderMessage.

Si vous voulez un ArrayList fortement typée de OrderMessage puis utilisez la liste de l'espace de noms génériques et ajouter des instances de OrderMessage à elle.

Si votre OrderMessage a une structure de tableau dans alors vous devrez ajouter une méthode pour ce qui retourne un arraylist. Vous devrez écrire le code convertissant le OrderMessage en ArrayList.

4

Vous ne pouvez pas convertir un objet en un autre objet en C#. C'est un langage de type sécurisé. Vous devez créer un ArrayList et Add() votre structure.

Mieux encore, créez un List<StructType>() et ajoutez votre struct à cela.

CLR Via C#. Lis le.


OrderMessageStructure.OrderMessage orderToModify = 
    new OrderMessageStructure.OrderMessage(); 

ArrayList arr = new ArrayList(); 
arr.Add(orderToModify); 
+0

Mieux encore, utilisez les génériques. =] – strager

+0

J'ai fait; l'éditeur n'a pas échappé à mon support pour moi. Je viens de l'éditer. – Will

1

Vous ne pouvez pas convertir ces deux objets, car ils ont des types complètement indépendants. Pour qu'un casting réussisse, OrderMessage doit hériter de ArrayList qui n'est certainement pas ce que vous voulez. Il est plus probable que vous souhaitiez ajouter un OrderMessage dans une ArrayList, ce qui peut être fait comme ça.

ArrayList arr = new ArrayList(); 
arr.Add(orderToModify); 
1

Inutile de lancer des objets. ajoutez simplement votre arraylist:

ArrayList list = new ArrayList(); 
list.Add(myObject); 

mais une meilleure option est d'utiliser une liste générique:

List<MyObject> list = new List<MyOjbect>(); 
list.Add(MyObject); 

L'avantage de la liste générique est qu'il est fortement typé de sorte que vous n'aurez pas pour renvoyer l'objet à votre type lorsque vous le sortez de votre liste.

Questions connexes