IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

problème de conversion


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut problème de conversion
    Bonjour,
    J'ai le code suivant dans un webservice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public partial class RequestStatus {
            private RequestedData[] resultsField;
     
            [System.Xml.Serialization.XmlArrayAttribute(IsNullable=true)]
            public RequestedData[] Results {
                get {
                    return this.resultsField;
                }
                set {
                    this.resultsField = value;
                }
            }
    }
     
    public partial class RequestedData {
        }
     
     
    public partial class RiskModelDescriptor : RequestedData {
            private int idField;
            private string nameField;
     
            public int Id {
                get {
                    return this.idField;
                }
                set {
                    this.idField = value;
                }
            }
     
            [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
            public string Name {
                get {
                    return this.nameField;
                }
                set {
                    this.nameField = value;
                }
            }
    }
    Le webservice contient d'autres objets "blablaDescriptor" qui héritent de RequestedData.

    Je fais appel au webservice comme cela ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    static void Main(string[] args) {
    	OService webService = new OService();
    	RequestStatus rs1 = new RequestStatus();
    	rs1 = webService.GetTotos();
    	List<RiskModelDescriptor> rds1 = new List<RiskModelDescriptor>();
    	rds1 = rs1.Results.ToList<RiskModelDescriptor>();
    	for (int i = 0; i < rds1.Count; i++) {
    		Console.WriteLine("rds1 : " + rds1.ElementAt(i).Name);
    	}
    }
    Cela ne compile pas :
    1/ Instance argument: cannot convert from 'OServiceConsumer.OWebService.RequestedData[]' to 'System.Collections.Generic.IEnumerable<OServiceConsumer.OWebService.RiskModelDescriptor>'
    2/ 'OServiceConsumer.OWebService.RequestedData[]' does not contain a definition for 'ToList' and the best extension method overload 'System.Linq.Enumerable.ToList<TSource>(System.Collections.Generic.IEnumerable<TSource>)' has some invalid arguments

    Voyez-vous comment convertir correctement le tableau de RequestedData en tableau de RiskModelDescriptor pour résoudre le problème n°1?
    Pour résoudre le problème n°2, est-ce que je dois absolument me passer de List<> et passer par des tableaux [] ??? Ou alors quand le 1er problème sera résolu ce problème disparaîtra?
    D'avance merci,

  2. #2
    Membre actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Points : 271
    Points
    271
    Par défaut
    Bonjour,

    pour un début de réponse c'est normal que la conversion ne marche pas implicitement,
    tu essaie de convertir un objet contenant 2 attribut définit en un objet mère contenant seulement un constructeur vide
    il faut que RequestData contienne tes attributs et non l'enfant.

    ensuite pour ton deuxième problème tu peux utilisé la méthode "ToArray()" sur ton objet list pour la convertir en tableau

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut
    J'ai résolu mon problème. Je pensais que le cast était implicite quand une classe était dérivée d'une autre mais je devais faire un cast explicit en fait. Et je devais le faire au niveau de chaque élément et non au niveau du tableau. Ca donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    static void Main(string[] args) {
    	OService webService = new OService();
    	RequestStatus rs1 = new RequestStatus();
    	rs1 = webService.GetTotos();
    	foreach (RequestedData elem in rs1.Results) {
    		Console.WriteLine("rds1 : " + ((RiskModelDescriptor)elem).Name);
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de conversion de dimension dans BUSINESS OBJECT
    Par greatmaster1971 dans le forum Deski
    Réponses: 4
    Dernier message: 28/04/2014, 13h15
  2. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  3. Problème de conversion 3DS->.X
    Par JBernn dans le forum DirectX
    Réponses: 5
    Dernier message: 08/04/2004, 19h08
  4. Problème de conversion unicode
    Par djmalo dans le forum C
    Réponses: 5
    Dernier message: 09/03/2004, 11h48
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo