J'envoie des données d'un formulaire Windows au service Web sous la forme de ArrayList code>. Dans la déclaration de service Web de ma méthode, c'est comme: private void offersAvailableSubmit_Click(object sender, EventArgs e)
{
ArrayList options;
options.Add("item 1");
options.Add("item 2");
options.Add("item 2");
//In this line of code it is showing error that Argument 1: cannot convert from 'System.Collections.ArrayList' to 'object[]'
int rowsAffected = serviceCaller.SaveSelectedOffers(options, rowCount);
}
4 Réponses :
J'utiliserais une liste ou une matrice dactylographiée dans votre définition de méthode Web. Pas de confusion possible. Une arrayliste n'est pas fortement typée, ce qui signifie que le contenu ne peut pas être connu tant que le temps d'exécution.
[WebMethod]
public int SaveSelectedOffers(string[] offers, int selectedRows)
{
}
Services Web ne peut pas passer des types complexes tels que ArrayList code> ou au moins pas sans une certaine configuration, il suffit de simplifier votre service Web. Changez-le à ceci: object[] options = new object[] { "item 1", "item 2", "item 3" };
Configuration très simple i>: En entrant dans la page de configuration et en sélectionnant le type de liste générique, c'est un monde de plaisir par rapport à "issu d'une éteinte" comme celui-ci.
@GrantThomas, aussi vrai que c'est vrai, cela ne semble-t-il pas beaucoup plus pratique de tirer parti des types primitifs de sorte que d'autres plates-formes soient beaucoup plus capables d'accéder à vos services? Je suppose que je pense que cette façon parce que dans mon organisation, nous avons MF, Java, .NET, C ++, PHP, PERL et toute autre plate-forme que vous pouvez penser à fonctionner entre les sections organisationnelles.
Vous n'êtes pas le seul à «penser de cette façon», mais vous me comprenez mal. Une telle configuration n'empêche pas les clients non -.net un bit: c'est une configuration client i>. Un cas où un peu de connaissances composait des idées et des progrès.
@GrantTomas, vous indiquez donc que la WCF côté serveur gérera la désérialisation et ensuite le côté client, je pourrais utiliser une arrayliste code> dans une plate-forme .NET et un objet [] code > en Java? Je veux dire, la liste code> code> aurait presque certainement effectivement être sérialisée b> à un objet [] code> oui?
Comment la sérialisation pour les tableaux se produit est, comme il devrait être, non pertinent. Le point est que cela arrive. Il existe des moyens conventionnels pour saisir et produire des données telles que celle-ci; Ce n'est que dans certains cas, vous devrez fournir une configuration côté client pour obtenir des implémentations de niveau supérieur, mais il n'est pas nécessaire.
Je vous suggère d'utiliser edit # 1 p> Bien dit par Michael: P> Les services Web ne peuvent pas réussir des types complexes tels que ArrayList, ou du moins pas
Sans une certaine configuration, simplifiez simplement votre service Web. - Michael P>
blockQuote> edit # 2 p> Pour effectuer votre service Web Utiliser
System.Collections.Generic.List Code> P>
oublier tout cela changeant votre code non-sens. p>
Si vous cliquez sur le bouton droit de la souris sur le service dans le dossier "Références de service" et sélectionnez "Configurer la référence de service" dans le menu contextuel, vous pouvez spécifier quel type le client doit utiliser pour collections. P>
Dans votre cas, sélectionnez simplement Cependant, vous pouvez spécifier System.Collections.ArrayList CODE> dans la liste déroulante "Type de collecte". P>
system.collections.generic.list code> et avoir des listes génériques fortement typées. P>
:) n'a pas remarqué que quelqu'un avait posté ceci; Connection lente :(
Dans vos options de calcul de code; devrait être comme des options arraylist = nouvelle arraylist ();