1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    mars 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 18
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2014
    Messages : 71
    Points : 48
    Points
    48

    Par défaut Supprimer le namespace avec le GetType ou le ToString

    Bonjour,

    Je voulais savoir si quand je fait un GetType ou un ToString de l'une de mes classe je peut supprimer le namespace devant exemple :
    J'ai 3 classe :
    - Program (le main quoi)
    - Mother
    - Child

    et du coup dans mon main je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Child c = new Chiled();
    Console.WriteLine(c.GetType());
    et ça me sort Test_CSharp_pure.Child je souhaite donc enlever le Test_CSharp_pure qui est le namespace

    Merci de votre aide
    L’Échec est la preuve que l'on à essayer
    Les question bête n'existe pas la seul chose bête c'est la personne qui n'auras pas poser la question

  2. #2
    Membre éclairé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    septembre 2008
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : septembre 2008
    Messages : 1 103
    Points : 790
    Points
    790

    Par défaut

    Je suis peut-être à coté de la plaque mais un nameof(Child) ne correspondrait pas à ton attente ?
    Un Gone parmi les Gones

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    mars 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 18
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2014
    Messages : 71
    Points : 48
    Points
    48

    Par défaut

    Sa me met bien bien Child ducoup mais genre il y a pas une méthode pour que avec c j'obtienne Child pas grave si ça existe pas je me débrouille avec ça limite merci
    L’Échec est la preuve que l'on à essayer
    Les question bête n'existe pas la seul chose bête c'est la personne qui n'auras pas poser la question

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2007
    Messages
    396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2007
    Messages : 396
    Points : 612
    Points
    612

    Par défaut

    Sur l'objet Type tu as les propriétés Name (uniquement le nom du type, équivalent de nameof du type) et FullName (nom complet avec la hiérarchie de namespace) ; la méthode ToString() renvoie le FullName mais de ton côté tu peux utiliser le Name seul.

  5. #5
    Membre chevronné

    Homme Profil pro
    Responsable déploiement (SCCM, AirWatch, AMP)
    Inscrit en
    juillet 2014
    Messages
    1 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, AirWatch, AMP)
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2014
    Messages : 1 121
    Points : 2 080
    Points
    2 080

    Par défaut

    Une petite méthode d'extension.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public static class extension
        {
            public static string Name(this object obj)
            {
                return obj.GetType().Name;
            }
        }

  6. #6
    Membre expérimenté
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    1 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 1 027
    Points : 1 599
    Points
    1 599

    Par défaut

    Pourquoi créer une méthode d'extension quand il suffit de surcharger ToString (comme l'a précisé Noxen) ?

  7. #7
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    octobre 2013
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : octobre 2013
    Messages : 1 387
    Points : 3 057
    Points
    3 057

    Par défaut

    Citation Envoyé par popo Voir le message
    Pourquoi créer une méthode d'extension quand il suffit de surcharger ToString (comme l'a précisé Noxen) ?
    Entre créer une méthode d'extension et surcharger le ToString pour chaque classes, autant créer la méthode d'extension.. Tu fais le boulot une seule fois !

  8. #8
    Membre chevronné

    Homme Profil pro
    Responsable déploiement (SCCM, AirWatch, AMP)
    Inscrit en
    juillet 2014
    Messages
    1 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, AirWatch, AMP)
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2014
    Messages : 1 121
    Points : 2 080
    Points
    2 080

    Par défaut

    Je veux bien voir l'exemple de Noxen, même si j'évite de modifier le comportement des méthodes de base.

  9. #9
    Rédacteur/Modérateur

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    1 458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 458
    Points : 4 887
    Points
    4 887
    Billets dans le blog
    5

    Par défaut

    Citation Envoyé par popo Voir le message
    Pourquoi créer une méthode d'extension quand il suffit de surcharger ToString (comme l'a précisé Noxen) ?
    Plus qu'une surchage, c'est le polymorphisme qui est souhaité. Et cela nécessite d'avoir le contrôle sur la classe pour pouvoir faire cela. Sans compter que la méthode ToString() est peut-être déjà redéfinie pour afficher quelques choses de plus user friendly.

    Bref, la meilleure méthode ici, à mon avis, reste la méthode d'extension sur la classe Object, comme le propose ericlm128. On écrit la méthode une fois, et c'est disponible pour toutes les classes !
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2007
    Messages
    396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2007
    Messages : 396
    Points : 612
    Points
    612

    Par défaut

    Citation Envoyé par popo Voir le message
    Pourquoi créer une méthode d'extension quand il suffit de surcharger ToString (comme l'a précisé Noxen) ?
    Je pense que la façon dont j'ai formulée ma phrase prête à confusion : ce que je lui conseillais c'est d'utiliser la propriété Name du type au lieu d'utiliser la méthode ToSting() (de façon explicite ou implicite).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Child c = new Child();
    Console.WriteLine(c.GetType().Name);
    La méthode d'extension d'ericlm128 est une approche tout à fait valide pour simplifier le code (bien que j'y rajouterais une vérification sur la nullité d'objet).

  11. #11
    Rédacteur/Modérateur

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    1 458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 458
    Points : 4 887
    Points
    4 887
    Billets dans le blog
    5

    Par défaut

    Citation Envoyé par Noxen Voir le message
    La méthode d'extension d'ericlm128 est une approche tout à fait valide pour simplifier le code (bien que j'y rajouterais une vérification sur la nullité d'objet).
    Pas forcément. Cela dépend du comportement souhaité. Si on souhaite que cela soit le plus transparent possible et que cela ressemble au maximum à une fonction membre et génère un NullPointerException, il faut laisser le code ainsi.

    C'est une des subtilités des méthodes d'extensions :
    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
     
    class Classe1
    {
       public int Truc()
       {
          return 5;
       }
    }
     
    static class Classe2
    {
       public static int Truc2(this Truc o)
       {
          return 5;
       }
    }
     
    int Main(string[] args)
    {
       Classe1 o = null;
       o.Truc(); // NullPointerException
       o.Truc2(); // Pas d'erreur
    }
    Les deux méthodes font exactement la même chose, et n'ont pas besoin d'objet. Pourtant, la première génère une exception, et la seconde non. Cela ce produit ainsi car :
    • une méthode à besoin d'un objet support. C'est un impératif. Sans cela, NullPointerException ;
    • une méthode d'extension est seulement un sucre syntaxique, qui permet de faire croire qu'on ajoute une méthode à une classe. Mais en réalité, cela reste simplement un appel de fonction.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2007
    Messages
    396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2007
    Messages : 396
    Points : 612
    Points
    612

    Par défaut

    Dans la méthode d'extension elle-même ce code return obj.GetType().Name; va lever une NullReferenceException, c'est ce à quoi je faisais allusion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static class Extensions
    {
      public static string TypeName(this object obj)
      {
        return obj?.GetType().Name;
      }
    }

  13. #13
    Rédacteur/Modérateur

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    1 458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 458
    Points : 4 887
    Points
    4 887
    Billets dans le blog
    5

    Par défaut

    J'avais bien compris Pour ma part, je laisserai l'exception être générée, pour la raison invoquée dans mon précédent commentaire.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2007
    Messages
    396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2007
    Messages : 396
    Points : 612
    Points
    612

    Par défaut

    Citation Envoyé par François DORIN Voir le message
    J'avais bien compris Pour ma part, je laisserai l'exception être générée, pour la raison invoquée dans mon précédent commentaire.
    Pour le coup c'est moi qui ne t'avais pas compris. Effectivement ça dépend du comportement que l'on en attend, selon qu'on veut traiter cette méthode d'extension comme une méthode membre ou comme un simple "helper" ; mais là c'est plus une question de conception.

Discussions similaires

  1. supprimer un namespace créé avec CreateExtNS2
    Par rufa11 dans le forum Debian
    Réponses: 1
    Dernier message: 19/03/2013, 02h47
  2. [DOM] Supprimer des balise avec dom
    Par Shandler dans le forum DOM
    Réponses: 3
    Dernier message: 04/06/2006, 20h03
  3. Supprimer des caractères avec une requête
    Par Daniel MOREAU dans le forum Access
    Réponses: 3
    Dernier message: 24/05/2006, 00h28
  4. Supprimer fichier uploader avec aspSmartUpload
    Par julio_097 dans le forum ASP
    Réponses: 2
    Dernier message: 11/08/2005, 17h27
  5. supprimer une ligne avec cle etrangere
    Par BaBas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/07/2003, 12h24

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