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 :

Passer une valeur d'un classe à l'autre via une propriété [Débutant]


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Projeteur DAO, developpeur
    Inscrit en
    Octobre 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Projeteur DAO, developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2012
    Messages : 39
    Points : 29
    Points
    29
    Par défaut Passer une valeur d'un classe à l'autre via une propriété
    Bonjour,
    d'habitude, je ne programme qu'en VB, mais je dois adapter un code en c#, donc j'essaye de me dépatouiller avec
    dans une classe de type public, TextHighlightSampleGx , j'ai une classe private , TextHighlighter dans laquelle se fait un traitement, qui nécessite une valeur que je n'ai que dans la classe public

    Pour accèder à ma valeur de partout, j'ai défini une propriété dans la classe public :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //propriété de stockage des documents
          Document documentstoke;
          public  Document Stokedocument
          {
              get
              {
                  return documentstoke;
              }
              set
              {
                  documentstoke = value;
              }
          }
    dans ma classe publique, j'assigne la valeur comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          Document document = file.Document;
            Stokedocument = document;
    document est bien valide, j'ai testé

    Puis dans ma classe private, où j'ai besoin de la valeur, je fait comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          //instancie la classe pour pouvoir lire et écrire dans la propriété
              TextHighlightSampleGx Th = new TextHighlightSampleGx();
             Document document = Th.Stokedocument;
    mais la, document est désespérément null
    donc j'ai des erreur référence null
    Et là je sèche

    merci d'avance
    Gégé

  2. #2
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    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 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par gegematic Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          //instancie la classe pour pouvoir lire et écrire dans la propriété
              TextHighlightSampleGx Th = new TextHighlightSampleGx();
             Document document = Th.Stokedocument;
    mais la, document est désespérément null
    donc j'ai des erreur référence null
    Et là je sèche
    Il est normal que la valeur de Th.Stokedocument soit null car tu créer une instance de la classe TextHighlightSampleGx juste au dessus. Autrement dit, suite au new, ton objet Th est null.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Projeteur DAO, developpeur
    Inscrit en
    Octobre 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Projeteur DAO, developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2012
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Bonjour et merci, ZenZitone,
    effectivement, c'est évident, mais si j'en suis arrivé là, c'est parceque si je n'instanciais pas, th était inaccessible ...
    ce que je fais est nul (bricoler du c# alors qu'on ne maitrise pas le langage), mais j'ai un besoin ponctuel de cette fonctionnalité, pour laquelle je n'ai rien trouvé, ni en freeware ni en shareware.
    donc j'essaye de me débrouiller en compilant des exemples, mais c'est plus compliqué que prévu.
    je viens de découvrir que la porté des variables fonctionne différemment du vb, donc j'ai créé une variable statique à un autre niveau du code, et j'arrive à récupérer mon document.
    mais je ne suis pas sorti d'affaire pour autant ...

    au début j'ai utilisé ma librairie c# en vb, mais je suis rapidement tombé sur l' écueil de l'usage massif des enumerator dans les exemples,
    donc j'ai décidé de passer à c# ...
    Gégé

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Tu peux consulter ce tutoriel pour apprendre C# : Apprentissage du langage C#

    Il date de 2008, le language a évolué depuis, mais c'est amplement suffisant pour s'initier, le principal y est

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Projeteur DAO, developpeur
    Inscrit en
    Octobre 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Projeteur DAO, developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2012
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Salut,
    Citation Envoyé par DotNetMatt Voir le message
    Tu peux consulter ce tutoriel pour apprendre C# : Apprentissage du langage C#

    Il date de 2008, le language a évolué depuis, mais c'est amplement suffisant pour s'initier, le principal y est
    quand je suis passé à net, j'ai pensé programmer en c#, car pour Autocad, la plus-part des exemples sont en c#
    j'ai même acheté un bouquin,
    mais comme j'ai eu pas mal de développement access en Vba, j'ai finalement opté pour VB
    je vais relire ce tutoriel, mais c'est assez dur de jongler entre les langages quand on est pas toujours dessus ...

    comme j'ai réussi à me débrouiller avec une vilaine méthode, une variable globale,
    je suis quand même preneur d'un exemple simple pour l'accès par propriété, car je remarque que beaucoup de sujets en c# tournent autour de cette portée des variables,
    qui est encore compliquée par le bloc de code (je ne crois pas qu'il y est l'équivalent en VB ?)
    "je veux lire ma variable d'un form à un autre form" est un sujet récurent (aujourd'hui même sur ce forum)
    et finalement, je n'y suis pas arrivé proprement, alors je pense que c'est un vrais sujet pour les newbies !
    Gégé

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Projeteur DAO, developpeur
    Inscrit en
    Octobre 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Projeteur DAO, developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2012
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    salut à tous,
    au final, ce qui m'avait fait perdre le fil était le fait qu'en C#, il n'y a pas de module global, ou l'on peut créer des propriétés et les lire et écrire comme on veut
    Comme je bidouillai un prog existant, j'ai pensé que pour lire et écrire, il fallait instancier la classe, écrire la valeur, puis ensuite retrouver l'instance et lire la valeur
    le problème c'est que je n'arrivais pas à retrouver mon instance.
    Il fallait la passer comme argument (ce qu'on m'a expliqué dans un autre sujet)
    mais je ne voulais pas de cette solution .
    donc au final, pour imiter le fonctionnement du module global , voilà la méthode qui semble convenir:
    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
    42
    43
    44
    45
    46
     
    using System;
    namespace ConsoleApplication3
    {
        public class Employee
        {
            private  string name;
            private static string fonction;
            // A read-write instance property:
            public  string Name
            {
                get { return name; }
                set { name = value; }
            }
            // A read-write static property:
            public static string Fonction
            {
                get { return fonction; }
                set { fonction = value; }
            }
          }
        class TestEmployee
        {
            private class souclass
            {
                public void Sousprog()
                {
                   string fonc = ConsoleApplication3.Employee.Fonction;
                   System.Console.WriteLine("Fonction " + fonc);
                   System.Console.WriteLine("Fin ");
                }
            }
            static void Main()
            {
                Employee e1 = new Employee();
                Employee e2 = new Employee();
                e1.Name = "Nom 1";
                e2.Name = "Nom 2";
                Employee.Fonction = "Chef";
                System.Console.WriteLine("Employee name: {0}", e1.Name);
                System.Console.WriteLine("Employee name: {0}", e2.Name);
                souclass sc = new ConsoleApplication3.TestEmployee.souclass();
                sc.Sousprog();
            }
        }
    }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2012, 15h08
  2. Réponses: 2
    Dernier message: 26/03/2010, 14h13
  3. passer une valeur d'un formulaire à un autre de page différentes
    Par ouakammathieu dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/12/2008, 15h05
  4. Réponses: 15
    Dernier message: 02/05/2007, 19h04
  5. Passer la valeur d'un champ à un autre
    Par tets88 dans le forum Access
    Réponses: 3
    Dernier message: 16/03/2006, 17h09

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