C # API генератор - PullRequest
       6

C # API генератор

5 голосов
/ 28 августа 2010

У меня есть несколько DLL-файлов, и я хочу экспортировать все публичные классы с помощью методов, разделенных пространствами имен (экспорт в html / текстовый файл или что-либо еще, что я могу ctrl + c / v в Windows :)).

Я не хочу создавать документацию или объединять мои библиотеки с XML-файлом. Мне просто нужен список всех открытых методов и свойств.

Какой лучший способ сделать это?

TIA для любых ответов

Ответы [ 3 ]

6 голосов
/ 29 августа 2010

Очень грубо по краям, но попробуйте это для размера:

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

namespace GetMethodsFromPublicTypes
{
    class Program
    {
        static void Main(string[] args)
        {
            var assemblyName = @"FullPathAndFilenameOfAssembly";

            var assembly = Assembly.ReflectionOnlyLoadFrom(assemblyName);

            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve);

            var methodsForType = from type in assembly.GetTypes()
                                 where type.IsPublic
                                 select new
                                     {
                                         Type = type,
                                         Methods = type.GetMethods().Where(m => m.IsPublic)
                                     };

            foreach (var type in methodsForType)
            {
                Console.WriteLine(type.Type.FullName);
                foreach (var method in type.Methods)
                {
                    Console.WriteLine(" ==> {0}", method.Name);
                }
            }
        }

        static Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
        {
            var a = Assembly.ReflectionOnlyLoad(args.Name);
            return a;
        }
    }
}

Примечание. Это требует уточнения, чтобы исключить методы получения / установки свойств и унаследованные методы, но это достойное начало

1 голос
/ 28 августа 2010

Вы смотрели на .NET Reflector от RedGate. Имеет функцию экспорта.

0 голосов
/ 28 августа 2010

Вы можете начать здесь с Assembly.GetExportedTypes()

http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getexportedtypes.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...