我正在做一些大型类库的代码审查,我想知道是否有人知道一个简单的方法来生成所有方法(也可能是属性/变量)列表及其访问修饰符。例如,我想是这样的:是否可以显示所有方法及其访问修饰符?
private MyClass.Method1()
internal MyClass.Method2()
public MyOtherClass.Method1()
东西有点像一个C++头文件,但对于C#。这将把所有内容放在一个地方以便快速审查,然后我们可以调查是否有些方法确实需要标记为内部/公共。
我正在做一些大型类库的代码审查,我想知道是否有人知道一个简单的方法来生成所有方法(也可能是属性/变量)列表及其访问修饰符。例如,我想是这样的:是否可以显示所有方法及其访问修饰符?
private MyClass.Method1()
internal MyClass.Method2()
public MyOtherClass.Method1()
东西有点像一个C++头文件,但对于C#。这将把所有内容放在一个地方以便快速审查,然后我们可以调查是否有些方法确实需要标记为内部/公共。
是啊,使用反射:
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等 - 或属性属性。
那么,你当然可以使用反射为此,枚举的方法。
.Net Reflector or ildasm。如果你问出口,但只请求您需要的特定成员
反汇编会为你生成一个很好的文件。
NDepends也将做到这一点(和具有更大的灵活性),但COMERCIAL使用,费钱。
Exuberant ctags具有用于C#中的模式,并且易于使用。这就是说,我只是想反映这个集会。
有可以使用的工具,如Reflector
如果你正在使用Visual Studio,那么你总是可以得到这一观点。
只需使用“转到定义”选项和Visual Studio开辟了一个新的标签类型的元数据(如果您使用的DLL,而不是直接的源代码)。
感谢乔恩 - 这看起来很完美。 – 2009-02-10 14:49:37