【问题标题】:C# API generatorC# API 生成器
【发布时间】:2011-04-05 06:23:43
【问题描述】:

我有几个 dll 文件,我想用命名空间分隔的方法导出所有公共类(导出到 html/文本文件或其他任何我可以在 Windows 中按 ctrl+c/v 的文件:)。

我不想创建文档或将我的 dll 与 xml 文件合并。我只需要所有公共方法和属性的列表。

实现这一目标的最佳方法是什么?

TIA 提供任何答案

【问题讨论】:

  • 纯文本文件或任何我能做的复制粘贴:>

标签: c# .net api generator


【解决方案1】:

边缘非常粗糙,但试试这个尺寸:

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

注意:这需要改进以排除属性 getter/setter 和继承方法,但这是一个不错的起点

【讨论】:

  • 如果我正确解释了 OP,需要在 LINQ 查询中按命名空间对这些类进行分组并输出每个命名空间名称。
  • @PHeiberg,我没说它是完美的! ;-) 也就是说,我可以对其进行调整以更接近 OP 所追求的。公平点做得好=)
【解决方案2】:

您是否看过 RedGate 软件中的 .NET Reflector。它具有导出功能。

【讨论】:

  • 它只是导出所有文件并创建VS项目。我真的不需要那个。
【解决方案3】:

【讨论】:

    猜你喜欢
    • 2017-08-07
    • 2011-12-07
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2010-11-29
    相关资源
    最近更新 更多