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 :

Probleme de cast


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 17
    Points
    17
    Par défaut Probleme de cast
    Bonjour,

    J'ai défini dans un projet une nouvelle classe SoaEntityAttribute, dérivée de Attribute.
    Dans un autre projet, je souhaite récuperer les attributs "SoaEntityAttribute" d'une PropertyInfo p.
    pour cela, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    object[] attr = p.GetCustomAttributes(false);
    Yke.Services.Patterns.SoaEntityAttribute a = Yke.Services.Patterns.SoaEntityAttribute)(attr[0]);
    attr[0] étant mon SoaEntityAttribute :
    [0] = {Yke.Services.Patterns.SoaEntityAttribute}
    Or, a l'exécution je me prends l'exeption :
    "Unable to cast object of type 'Yke.Services.Patterns.SoaEntityAttribute' to type 'Yke.Services.Patterns.SoaEntityAttribute'."

    Auriez vous une idée ? Dois-je définir explicitement un cast ? Si oui, comment ?

    Merci d'avance.

  2. #2
    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 753
    Points
    39 753
    Par défaut

    Donc en gros, il arrive pas à faire un cast d'un type vers le même type ???
    De toutes façons, pour les casts, j'utilise généralement le mot clé "as":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Yke.Services.Patterns.SoaEntityAttribute a = attr[0] as Yke.Services.Patterns.SoaEntityAttribute;
    Si le cast échoue, ça renvoie une valeur nulle (pas d'exception)

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Tiens, merci de me faire découvrir cette écriture pour un cast, c'est effectivement plus agréable.
    Malheureusement, dans mon cas j'obtiens un null

  4. #4
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Il existe une autre surcharge de GetCustomAttributes qui prend en paramètre un type, et qui ne renvoie que les attributs de ce type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonAttribut[] liste = (MonAttribut[])monType.GetCustomAttributes(typeof(MonAttribut), false);
    Ca résout peut être pas ton problème mais bon

Discussions similaires

  1. Probleme de cast de string en int
    Par Oberown dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/04/2006, 11h48
  2. Réponses: 12
    Dernier message: 25/07/2005, 14h49
  3. [VB.NET][dataset][datagrid] probleme de Cast
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2005, 14h18
  4. Probleme de cast de parametres
    Par John Fullspeed dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2004, 08h43
  5. probleme de cast
    Par gaut dans le forum C++
    Réponses: 9
    Dernier message: 06/08/2004, 18h43

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