我正在做一些大型類庫的代碼審查,我想知道是否有人知道一個簡單的方法來生成所有方法(也可能是屬性/變量)列表及其訪問修飾符。例如,我想是這樣的:是否可以顯示所有方法及其訪問修飾符?
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