2010-06-16 14 views

Répondre

3

Il existe un certain nombre de propriétés sur les objets MethodInfo et Type que vous pouvez utiliser pour interroger la visibilité.

Par exemple, pour un type que vous pouvez vérifier IsPublic, IsPrivate, IsNotPublic, IsNested, IsNestedFamOrAssembly, et beaucoup plus.

Pour une méthode (l'objet MethodInfo), vous avez un ensemble similaire: IsPublic, IsPrivate, IsFamilyOrAssembly, etc.

donc combiner avec des informations telles que la propriété Assembly sur un type (donc vous pouvez dire si Type1 et Type2 sont tous deux dans le même assemblage) et vous devriez être capable d'obtenir toutes les informations dont vous avez besoin.

+0

Si le framework .NET ne permet pas vraiment de répondre directement à ma question, existe-t-il au moins une liste de règles quelque part? Par exemple, il serait facile d'oublier que juste parce qu'une classe imbriquée IsPublic ne signifie pas qu'elle est accessible, pas si la classe parente est interne. – Qwertie

+0

Ouais, c'est le problème, il y a des règles, mais vous devrez intégrer du code pour les vérifier vous-même. Je ne suis même pas sûr d'une ressource spécifique qui énumère toutes les règles (bien que je sois sûr qu'il existe quelque part). Si je le faisais moi-même, je construirais probablement quelque chose qui traiterait les cas les plus communs, puis j'ajouterais aux autres quand je les rencontrerais. Kinda dépend cependant de qui est votre public. – ckramer