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

Signaler
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
-
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
-
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

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

Salut,

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

=
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
25
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
---------------------
Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

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


 


=
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
25
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
---------------------