2009-07-18 13 views
2

J'ai essayé de voir l'implémentation de la fonction [MethodImpl(MethodImplOptions.InternalCall)] public extern int get_Length();, qui à son tour est la propriété Length de la chaîne.Comment utiliser le réflecteur pour afficher l'implémentation des fonctions de la bibliothèque .NET

Mais réflecteur m'a donné l'erreur suivante:

The member is not loaded or may be hidden due to your visibility settings

Toutefois, le membre est chargé et les paramètres de visibilité est ALL

Répondre

2

I belive les méthodes externat sont celles qui sont « généralement » mis en œuvre en utilisant d'autres DLL, principalement natives. Et bien sûr, quand c'est le cas, vous êtes hors du terrain de réflexion!

+0

Comment puis-je voir sa mise en œuvre? – Learner

+0

Réponse simple - vous ne pouvez pas voir l'implémentation au niveau de ce que vous voyez lorsque vous reflétez le code .NET. Cependant, vous pourriez être en mesure de désassembler la DLL et essayer de donner un sens aux instructions d'assemblage - mais je n'irais pas là-bas. Que voulez-vous réaliser de toute façon? –

1

Certains types très importants comme String ont de nombreuses méthodes implémentées en utilisant du code natif. La propriété Length de String en est un exemple. Cela peut également être vu à partir du modificateur extern. Reflector ne peut pas vous montrer la mise en œuvre de ces méthodes.

+0

Comment puis-je voir sa mise en œuvre? – Learner

+2

Vous ne pouvez pas dans "Réflecteur", car ce code n'est plus du code IL. Son code d'assemblage natif, que vous devez désassembler avec d'autres outils .net ... Note: Avec l'outil "PeID" vous pouvez voir dans quelle langue une application a été écrite http://www.peid.info/ –