是否可以显示所有方法及其访问修饰符?

我正在对一些大类库进行代码审查,我想知道是否有人知道一种简单易行的方法来生成所有方法(也可能是属性/变量)及其访问修饰符的列表。 例如,我想要这样的事情:

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

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

是的,使用reflection:

 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等 – 或者属性属性。

好吧,你当然可以使用reflection来枚举方法。

丰富的ctags具有C#模式,易于使用。 那就是说,我只想反映大会。

您可以使用工具,例如Reflector

.Net Reflector或ildasm。

如果您要求导出,ildasm将为您生成一个不错的文件,但只询问您需要的特定成员。

NDepends也会这样做(并且具有更大的灵活性),但是,对于商业用途,需要花钱。

如果您使用的是Visual Studio,那么您始终可以获得该视图。

只需使用“转到定义”选项,Visual Studio就会在新选项卡中打开类型元数据(如果您使用的是DLL,而不是直接使用源代码)。