2009-05-07 3 views
3

J'ai un service Web qui, lorsqu'il est appelé, renvoie un objet Résultat qui contient une liste de manière polymorphique. Toutefois, lorsque j'ajoute une référence dans mon application client, le champ public devient un tableau de pays dans l'application cliente. Comment changer le champ de l'application client en Liste?La liste <Country> devient Pays [] via le service Web

public Result GetCountryList() 
{ 
    List<Country> countries = GrabCountryList(); 
    Result result = new Result(); 
    result.theResult = countries; 
} 

et c'est la propriété publique

public object theResult 
{ 
    get {return _theResult; } 
    set {_theResult = value;} 
} 


Accepté réponse de Mehmet Aras:

Faites un clic droit sur la référence de service, et sélectionnez "Configurer référence". Sous Type de collection, sélectionnez System.Collection.Generic.List. Mettez à jour la référence du service, et il devrait être bon d'y aller.

Merci à Matt Hamilton pour la suggestion de créer une nouvelle liste à partir de la matrice.

Répondre

8

Si vous utilisez VS2008, il y a un bouton avancé sur le formulaire de paramètres de référence de service qui vous permet de contrôler la génération de proxy client. Là, vous pouvez sélectionner le type de collection et la liste est parmi eux.

9

Je crois que vous devrez reconstruire la liste vous-même. Les services Web sont censés être indépendants du langage, et puisque List<T> fait partie du framework .NET, il ne peut pas faire partie des valeurs de retour sérialisées.

Reconstruire la liste est aussi simple que:

var countries = new List<Country>(result.theResult); 
Questions connexes