2013-04-03 1 views
0

Как получить все ссылочное имя dll и их имя класса представления с пространством имён, используемым в отражении dll в C#?Получить ссылочное имя dll, используемое для нашего проекта с именем класса

давайте рассмотрим sample.dll, в котором reference1.dll и reference2.dll используется в качестве ссылки на DLL образца через метод reference1.method1 и reference2.method2

мне нужно перечислить

1)reference dll names ie.reference1.dll,reference2.dll 
2)methods used in that dll names ie.reference1.method1,reference2.method2 
3) Namespace used for referring that reference dll 

я попробовал с myassembly.GetTypes() это делает не поможет мне

не ждет ваших ответов

+1

Это может быть полезным: http://stackoverflow.com/questions/1593500/get-namespace-classname-from-a-dll-in-c-sharp-2-0 – Rob

ответ

1

Хм, я не знаю, почему у ou think Assembly.GetTypes() не помогает ...

Обратите внимание, что не все dll находятся на диске, поэтому, если вы используете Assembly.Location вместо имени, тогда вы можете столкнуться с ошибкой.

Пространства имен не относятся к конкретной Ассамблее, сборка может содержать много пространств имен.

В приведенном ниже методе будет содержаться справедливый фрагмент .Net framework, поэтому вы можете немного отфильтровать список.

Помогает ли это?

 List<String> Dlls = new List<string>(); 
     List<String> Namespaces = new List<string>(); 
     List<String> Methods = new List<string>(); 
     foreach (var Assembly in AppDomain.CurrentDomain.GetAssemblies()) 
     { 
      if (!Dlls.Contains(Assembly.GetName().Name)) 
       Dlls.Add(Assembly.GetName().Name); 

      foreach (var Type in Assembly.GetTypes()) 
      { 
       if (!Namespaces.Contains(Type.Namespace)) 
        Namespaces.Add(Type.Namespace); 
       foreach(var Method in Type.GetMethods()) 
       { 
        Methods.Add(String.Format("{0}.{1}", Type.Name, Method.Name)); 
       } 
      } 

     }