2010-01-27 1 views
0

Je veux utiliser ce code pour saisir toutes les méthodes de l'assemblage « Mscorlib.dll » mais je reçois cette erreurCe code fonctionnera-t-il sur votre version de Visual Studio? C#

« Impossible de jeter l'objet du système de type « System.Reflection.RuntimeConstructorInfo » taper ». Reflection.MethodInfo '. "

Fondamentalement tout ce que je veux faire est obtenir une liste d'interfaces ou de membres de cet assembly.

Heres le code:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Reflection; 

namespace ConsoleApplication1 { 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      Assembly a = Assembly.Load("Mscorlib.dll"); 
      foreach (Type oType in a.GetTypes()) 
      { 
       MemberInfo[] f = oType.GetMembers(); 
       foreach (MethodInfo m in f) 
        Console.WriteLine("Member: {0}",m.ToString()); 
      } 
     } 
     } 
} 

Que pensez-vous?

+0

Ce serait un grand argument à l'aide de la ' mot-clé var' lors de l'apprentissage de nouvelles API puis en vérifiant la documentation/intellisense pour plus de connaissances approfondies. –

Répondre

4

Oui, les membres ne peuvent pas s'intervertis avec des méthodes, devrait être:

MemberInfo[] f = oType.GetMembers(); 
foreach (MemberInfo m in f) 
    Console.WriteLine("Member: {0}",m.ToString()); 

Le changement est: foreach (MemberInfo m f)

+0

Bonjour Brian, Oui votre droit! Une telle erreur stupide ... merci –

1

Vouliez-vous utiliser oType.Getmethods()? Parce que sinon, vous êtes en train d'énumérer tous les membres mais en espérant qu'ils soient tous méthodes.

Questions connexes