我正在对一些大类库进行代码审查,我想知道是否有人知道一种简单易行的方法来生成所有方法(也可能是属性/变量)及其访问修饰符的列表.例如,我想要这样的事情:
private MyClass.Method1()
internal MyClass.Method2()
public MyOtherClass.Method1()
Run Code Online (Sandbox Code Playgroud)
有点像C++头文件,但对于C#.这会将所有内容放在一个地方以便快速查看,然后我们可以调查是否真的需要将某些方法标记为内部/公共.
Jon*_*eet 10
是的,使用反射:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我将把GetFriendlyAccessName作为练习留给读者 - 使用IsFamily,IsPrivate,IsPublic,IsProtected等 - 或者属性属性.