Будет ли этот код работать на вашей версии Visual Studio? C # - PullRequest
0 голосов
/ 27 января 2010

Я хочу использовать этот код, чтобы получить все методы из сборки "Mscorlib.dll", но я получаю эту ошибку

"Невозможно привести объект типа 'System.Reflection.RuntimeConstructorInfo' квведите 'System.Reflection.MethodInfo' . "

По сути, все, что я хочу сделать, - это получить список интерфейсов или членов этой сборки.

Вот код:

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());
            }
         }
      } 
}

Что вы думаете?

Ответы [ 2 ]

4 голосов
/ 27 января 2010

Да, члены не могут быть обменены методами, должно быть:

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

Изменение: foreach ( MemberInfo m в f)

1 голос
/ 27 января 2010

Вы имели в виду использовать oType.Getmethods ()? В противном случае вы перечисляете всех членов , но ожидаете, что все они будут методами .

...