2009-02-10 71 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,而不是直接的源代碼)。

相關問題