Problème d'accessibilité à la valeur d'une propriété via un accesseur

billou_13
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
- 29 mai 2007 à 13:28
billou_13
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
- 29 mai 2007 à 13:52
Bonjour,

Alors voila, je développe une dll managée en C++.Net et je me trouves confronté à un problème assez bizarre.
J'ai une classe Person (la mienne est un peu plus compliquée mais c'est pour exemple:

public __gc class Person
{
    public:
        Person();

        __property void set_Age(int value)
        {
            _age = value;
        }
        __property int get_Age()    { return _age; }

    private:
       int _age;
};

J'ai donc créée une application en C# utilisant cette dll. Lorsque j'instancie la classe Person, je me trouve confronté à une erreur quand je souhaite accéder à la valeur de Age.
Exemple:
Person n = new Person();
if( n.Age > 18) { ... } //Ca plante ici

L'erreur retournée est la suivante:
La propriété, l'indexeur ou l'événement 'Age' n'est pas pris en
charge par le langage ; essayez d'appeler directement les méthodes
d'accesseur 'Person.Age.get' ou
'Person.Age.set'

Je ne comprends pas trop la raison surtout que quand je met l'espion dessus en debug: je vois bien la valeur. De plus, la méthode set fonctionne correctement.

Alors je tourne et je vois pas,

Si quelqu'un a une idée, merci par avance,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------

4 réponses

The_Guardian
Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

29 mai 2007 à 13:36
Salut,

pourquoi tu essayes d'acceder directement a une variable private ?
passe par l'accesseur que tu as cree plutot, non ?

=
0
billou_13
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
29
29 mai 2007 à 13:39
Je n'accèdes pas directement à la variable private. Je passe par l'accesseur :
Lorsque j'appelle :
n.Age
Il fait appel à la fonction "public":
__property int get_Age()    { return _age; }

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
The_Guardian
Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

29 mai 2007 à 13:45
RE

ah je connaissais pas cette syntaxe qui fait que tu peux passer par un accesseur juste en mettant le nom de la variable, et les __property, donc je ne peux pas t'aider, desolee


 


=
0
billou_13
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
29
29 mai 2007 à 13:52
Pas de problème, merci quand même.

C'est encore du microsoft tout craché ^^ => sympa de vue mais pas cool fonctionnellement lol

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0