2010-07-28 5 views
0

Je viens de commencer à utiliser VS2010 et avec C# 4.0. J'ai depuis utilisé les valeurs par défaut pour certaines de mes méthodes, ce qui m'a permis de supprimer certaines surcharges qui ont effectué cette opération.Références du service Web & C# 4.0 Valeurs par défaut

Mon problème est le suivant:

J'ai un projet de bibliothèque qui a plusieurs classes que j'utilise pour diverses choses à travers plusieurs autres projets. Les valeurs par défaut fonctionnent bien ici.

Un autre projet est un service Web que j'utilise pour effectuer certaines tâches sur un serveur distant. Aucune erreur n'est montrée (ou avertissements) quand je compile ce projet que les méthodes ci-dessus ne fonctionneront pas. Il compile bien.

Toutefois, lorsque j'ajoute ce service à un autre projet en tant que référence de service, il ne semble pas que la méthode ait des valeurs par défaut et se plaint donc de ne pas fournir suffisamment d'arguments.

J'ai redéployé mon service et mis à jour la référence de service, mais elle est toujours la même. Je viens aussi de remarquer qu'une méthode fonctionnant précédemment qui utilise un argument 'out' (c'est-à-dire MyMethod (out String arg1, String arg2)) ne semble pas fonctionner non plus maintenant.

Des suggestions? Je ne suis pas au courant que j'ai changé les paramètres de configuration qui le feraient, donc je suppose qu'il doit être C# 4.0. Cela dit, l'argument travaillait sur 4,0 la semaine dernière: S

Merci pour toute aide offerte ...

Vive Neil

Répondre

1

Je ne serais pas surpris d'entendre que les valeurs par défaut spécifiées dans un service Web ne sont pas reflétés dans le code de proxy généré par Visual Studio. Vous pourriez bien sûr créer votre propre couche proxy, ce qui serait très simple - mais vous devrez le mettre à jour chaque fois que vous changerez de service Web.

Si vous regardez le WSDL pour votre service, cela indique-t-il les valeurs par défaut? Il pourrait aussi y avoir un commutateur quelque part dans le générateur pour générer des paramètres optionnels ou non (pour la compatibilité avec C# 3).

Le paramètre out est potentiellement une question entièrement différente - quelle erreur obtenez-vous?

+0

L'erreur que je vois est similaire, c'est celui pour le paramètre out: méthode « MyMethod » a 2 paramètre (s), mais est invoqué avec 3 argument (s) Comme je l'ai dit, je suis sûr celui-ci n'était pas un problème auparavant, donc ça pourrait être quelque chose de stupide! – neildeadman

+0

@neildeadman: Hmm ... cela semble très étrange (notez que c'est trop * beaucoup * d'arguments plutôt que peu). À quoi ressemble le code généré? –

+0

Avec l'aide d'un collègue, nous arrivons au bas du paramètre 'out'. Je dois dire que je n'aime pas le fait que Visual Studio ou C# a fait cela sans mention de ce qui se passe à moi-même. J'ai changé cette méthode de retour d'un booléen à un vide. C# (disons) puis l'a fait pour que le service renvoie une chaîne, le paramètre out. Nous supposons cela parce que renvoyer une valeur est plus efficace que d'utiliser des paramètres. Curieusement, nous avons trouvé un message à quelqu'un ayant le problème inverse. Une valeur de retour a été faite dans un paramètre out dans leur service! – neildeadman

Questions connexes