2009-02-10 69 views
3

我正在做一些大型类库的代码审查,我想知道是否有人知道一个简单的方法来生成所有方法(也可能是属性/变量)列表及其访问修饰符。例如,我想是这样的:是否可以显示所有方法及其访问修饰符?

private MyClass.Method1() 
internal MyClass.Method2() 
public MyOtherClass.Method1() 

东西有点像一个C++头文件,但对于C#。这将把所有内容放在一个地方以便快速审查,然后我们可以调查是否有些方法确实需要标记为内部/公共。

回答

9

是啊,使用反射:

foreach (Type type in assembly.GetTypes()) 
{ 
    foreach (MethodInfo method in type.GetMethods(BindingFlags.Public | 
     BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance)) 
    { 
     Console.WriteLine("{0} {1}{2}.{3}", GetFriendlyAccess(method), 
      method.IsStatic ? "static " : "", type.Name, method.Name); 
    } 
} 

我会离开GetFriendlyAccessName作为练习读者 - 使用IsFamily,IsPrivate,IsPublic,IsProtected等 - 或属性属性。

+0

感谢乔恩 - 这看起来很完美。 – 2009-02-10 14:49:37

1

那么,你当然可以使用反射为此,枚举的方法。

0

.Net Reflector or ildasm。如果你问出口,但只请求您需要的特定成员

反汇编会为你生成一个很好的文件。

NDepends也将做到这一点(和具有更大的灵活性),但COMERCIAL使用,费钱。

1

Exuberant ctags具有用于C#中的模式,并且易于使用。这就是说,我只是想反映这个集会。

0

如果你正在使用Visual Studio,那么你总是可以得到这一观点。

只需使用“转到定义”选项和Visual Studio开辟了一个新的标签类型的元数据(如果您使用的DLL,而不是直接的源代码)。

相关问题