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 :

Cast d'objet generique [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut Cast d'objet generique
    Bonjour,

    un petit cas pour un newbie dans mon genre.

    donc peut-être une bete question

    néanmoins

    j'ai plusieurs classes construites à peu pres comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Item
    	public class Item : INotifyPropertyChanged, ICloneable, IDisposable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Items
        public class Items<T> : List<T>, INotifyPropertyChanged, ICloneable, IXml
            where T : Item
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Formula
    	public class Formula : Item
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Formulas
        public class Formulas : Items<Formula>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Product
    	public class Product: Item
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Products
        public class Products: Items<Product>
    lorsque je fait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nombreElements = (dataSource as Items<Item>).Count;
    ben ça va pas

    alors, comment puis-je faire un cast de datasource sans devoir lui mettre par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nombreElements = (dataSource as Items<Formula>).Count;
    qui lui fonctionne
    ce qui m'obligerai à faire autant de condition, qu'il y a de type.


    merci de votre aide

    et si je n'ai pas trop été clair, ben ... n'hésitez pas

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Bonjour,

    Est ce que tu as essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dataSource.OfType<Item>().Count();
    Je ne sais pas si ça va changer grand chose mais sait-on jamais
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  3. #3
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour et merci de la réponse

    je n'ai pas encore essayé non.

    mais encore une fois, cela implique que je connaisse le type de "datasource" à cet endroit du code et justement... je ne le connais pas

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Je voulais dire Item pardon
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  5. #5
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    alors
    dataSource de posede pas d'élément OfType

    ce que je ne comprends pas, c'est pourquoi je ne puis redefinir l'objet dataSource qui a pour type "formulas" par exemple
    en un type Items<Item>
    il me revoie tjs null
    il y a surement un truc que je n'ai pas compris mais quoi?????

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 97
    Par défaut
    Une remarque (qui peut être considérer HS, dans ce cas désolé),

    "Caster" un type générique revient à avoir une faille de conception. Soit il n'était pas nécessaire d'utiliser une classe paramétrique, soit l'angle d'approche pour résoudre le problème n'est pas le bon

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

Discussions similaires

  1. Problème de cast d'objet à la deuxième fois
    Par vilveq dans le forum Flex
    Réponses: 4
    Dernier message: 06/10/2009, 14h30
  2. [POO] Cast d'objet vers une classe
    Par karl3i dans le forum Langage
    Réponses: 9
    Dernier message: 27/07/2009, 10h12
  3. Cast IEnumerable objet typé
    Par UoLad dans le forum Linq
    Réponses: 2
    Dernier message: 09/05/2009, 14h26
  4. Instance of et Cast d'objet
    Par tiamat dans le forum Langage
    Réponses: 7
    Dernier message: 28/12/2007, 12h31
  5. cast d'objet parent en classe fille
    Par Plio dans le forum C++
    Réponses: 2
    Dernier message: 05/10/2007, 13h58

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