我有幾個DLL文件,我想導出所有公共類與名稱空間分隔的方法(導出到HTML /文本文件或其他任何我可以CTRL + C/V在Windows :))。C#API生成器
我不想創建文檔或使用xml文件合併我的dll。我只需要一個所有公共方法和屬性的列表。
什麼是最好的方式來實現這一目標?
TIA任何答案
我有幾個DLL文件,我想導出所有公共類與名稱空間分隔的方法(導出到HTML /文本文件或其他任何我可以CTRL + C/V在Windows :))。C#API生成器
我不想創建文檔或使用xml文件合併我的dll。我只需要一個所有公共方法和屬性的列表。
什麼是最好的方式來實現這一目標?
TIA任何答案
周圍的邊緣很粗糙,但嘗試一下本作的大小:
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和繼承的方法,但它是一個不錯的起點
您可以Assembly.GetExportedTypes()
http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getexportedtypes.aspx
出口去哪裏? – 2010-08-28 19:55:37
純文本文件或任何我可以複製粘貼:> – Jarek 2010-08-28 19:58:42