Obtenir la classe parente d'une propriété.

Signaler
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour,
je voudrais savoir si il est possible, par réfléxion ou par un autre moyen, en ayant un objet d'un certain type, d'obtenir la classe dont il est la propriété (si tant est qu'il est propriété d'une classe).

Mathmax

3 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,

Si tu accèdes à l'objet retourné par la propriété, c'est que tu as déjà accès au type ou à l'instance du type exposant cette propriété, non ?
Sinon si tu veux découvrir quels types exposent une propriété du type recherché, il va falloir que tu fasses la recherche en inspectant les propriétés de chaque type accessible.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

Non je n'ai pas accès à l'instance du type exposant cette propriété. Je dois la découvrir. Mais peut-être que je m'y prends mal. J'explique mon problème :

Je cherche à faire un programme que créer un xml dont la structure reflète la structure de mon site web où chaque noeud correspond à un fichier .aspx (je souhaite en fait générer un fichier .sitemap pour mon site)

J'ai pour cela crée plusieurs classes :
<li>SiteMapElement : qui représente un élément de mon sitemap avec 3 propriétés :</li><li>ParentDocument de type SiteMapDocument (voir ci dessous) en lecture seule qui représente le sitemap auquel appartient l'élément
</li><li>Les 2 propriétés title et url de type string. title est un identifiant pour mon élément, url est le chemin vers le fichier .aspx.</li><li>SiteMapElements est une classe qui hérite de List<SiteMapElement> pour laquelle je redéfinit les méthodes Add et Remove.
</li><li>SiteMapDocument : elle représente mon plan de site et contient principalement 2 propriétés :</li><li>Nodes en lecture seule qui est de type SiteMapElements</li><li>XmlDoc en lecture seule qui est de type XmlDocument
</li>Le but est d'abord de lire le .sitemap existant, puis le compléter avec les nouveaux fichiers .asxp de mon site. Je ne veux pas écraser mon fichier .sitemap sans avoir récolté les informations qu'il contient auparavant car je ne souhaite pas redéfinir la propriété title pour chaque SiteMapElement si elle existe déjà.
Dans la classe SiteMapDocument, une fois mon document Xml (XmlDoc) chargé, j'ajoute donc à la liste Nodes des éléments de type SiteMapElement. Pour cela je fais appel à la méthode Add redéfinie dans la classe SiteMapElements pour chaque noeud de XmlDoc. Dans cette méthode Add, j'aimerais pouvoir accéder à la classe dont l'élément passé en paramètre (de type SiteMapElement) est la propriété. Ceci afin de renseigner la propriété ParentDocument de cet élément. De manière générale, à chaque fois que je veux ajouter un élément à la listes Nodes d'un SiteMapDocument, je dois pouvoir renseigner la propriété ParentDocument. Je ne peux donc faire ça que dans la propriété Add de la classe SiteMapElements. D'où mon problème car je n'ai que l'objet SiteMapElement passé en paramètre à travers lequel, par je ne sais quel moyen, je peux accéder à la classe le contenant....

En espérant avoir été suffisamment clair pour que tu m'aides à y voir plus clair dans tout ça...

merci d'avance.
Mathmax
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Effectivement...
Je ne connais pas du tout ce domaine là, tu devrais poser ta question sur ASPFr (en citant ce post, et vice versa, histoire de pouvoir suivre) car je me demande même si ce que tu veux faire n'existerais pas déjà...

/*
coq
MVP Visual C#
CoqBlog
*/