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 :

[C#] List et implicit cast


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut [C#] List et implicit cast
    Bonjour à tous,

    j'ai un petit bug dans ma tête.

    Je ne comprend pas pourquoi le code suivant ne compile pas,
    sachant que ConfigurationManager.Configuration.Servers est de type ServerConfiguration[]...


    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Servers = new ObservableCollection<ViewModelServerConfiguration>(ConfigurationManager.Configuration.Servers);

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class ViewModelServerConfiguration : ViewModelBase, IDataErrorInfo
        {
     
            public static implicit operator ServerConfiguration(ViewModelServerConfiguration Object)
            {
                return (new ServerConfiguration { IpAddress = Object.IpAddress, Password = Object.Password, Port = Object.Port });
            }
     
            public static implicit operator ViewModelServerConfiguration(ServerConfiguration Object)
            {
                return (new ViewModelServerConfiguration { IpAddress = Object.IpAddress, Password = Object.Password, Port = Object.Port });
            }
    }

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    oui mais le cast implicite ne marche pas comme ca
    La solution la plus simple est celle ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Servers = new ObservableCollection<ViewModelServerConfiguration>(ConfigurationManager.Configuration.Servers.Cast<ViewModelServerConfiguration>());
    Mais pour le coup, la conversion implicite ne sert a rien, explicite est suffisante.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    Salut et merci pour ta réponse, ça fonction.

    Ça reste plus propre que de faire un for sur les items...
    Mais je me demande pourquoi ils n'ont pas intégré ce type de comportant directement dans le langage.

    Merci

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    En fait ça compile mais j'ai l'exception suivante qui est levée :

    Impossible d'effectuer un cast d'un objet de type 'Core.Configurations.ServerConfiguration' en type 'ViewModels.ViewModelServerConfiguration'.
    Une idée ?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    La méthode Cast n'utilise pas les conversions custom, ça fait juste un cast de référence. Tu peux faire comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var servers = ConfigurationManager.Configuration.Servers.Select(s => (ViewModelServerConfiguration)s);
    this.Servers = new ObservableCollection<ViewModelServerConfiguration>(servers);
    (découpé en 2 instructions pour la lisibilité)

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    Citation Envoyé par tomlev Voir le message
    La méthode Cast n'utilise pas les conversions custom, ça fait juste un cast de référence. Tu peux faire comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var servers = ConfigurationManager.Configuration.Servers.Select(s => (ViewModelServerConfiguration)s);
    this.Servers = new ObservableCollection<ViewModelServerConfiguration>(servers);
    (découpé en 2 instructions pour la lisibilité)
    Ça fonctionne ! Merci

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

Discussions similaires

  1. Listes chainee et cast de void*
    Par Sivenruot dans le forum C
    Réponses: 10
    Dernier message: 17/10/2014, 08h22
  2. [Débutant] Listes chainee et cast de void*
    Par Sivenruot dans le forum C#
    Réponses: 3
    Dernier message: 10/10/2014, 20h12
  3. List et String cast entre les deux types
    Par sas1986 dans le forum Langage
    Réponses: 3
    Dernier message: 08/07/2011, 10h32
  4. [C#] Cast implicite inexistant ?
    Par ekinox17 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/04/2006, 11h07
  5. [C++][std::list] Reinterpret cast
    Par chronos dans le forum SL & STL
    Réponses: 7
    Dernier message: 18/08/2005, 17h04

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