2013-10-28 35 views
1

我正在爲以下C#源創建簡單的文檔映射。正則表達式來解析C#源代碼

public class Person 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 

    public string DoSomething(string x) 
    { 
     return "Hello " + x; 
    } 
} 

結果應在樹狀或ListView被呈現,在以下方式:

Person 
-- Name 
-- Age 
-- DoSomething() 

所以,問題是,是否有其處理C#源代碼一個正則表達式或庫?

+3

任何理由不反思! – Anirudha

+2

http://stackoverflow.com/questions/81406/parser-for-c-sharp – Habib

+4

使用Roslyn。在任何情況下,使用正則表達式可以遠程解析像C#語言這樣複雜的東西。 (正則表達式甚至不能解析html) –

回答

7

絕對不能使用正則表達式來解析C#源代碼,因爲C#沒有正則語法。

你可以使用雖然羅斯林:http://blogs.msdn.com/b/csharpfaq/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx

可替代地,使用當前的C#編譯器(或System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp").CompileAssemblyFromSource()方法)的代碼編譯到一個新的組件,加載該組裝和使用反射來分析它。

+0

所以,即使對於這種簡單的情況,我需要使用另一個庫?我會檢查Roslyn。 – Jim

+1

@Jim,解析C#語言是您可以要求計算機執行的更復雜的任務之一。 –

0

Visual Studio已經有了類似的東西。您可以使用CS文件旁邊的箭頭單擊並獲取該文件中所有方法和變量的列表。它甚至會顯示一個掛鎖,如果他們是私人的。

+0

謝謝......但我需要在我的應用程序中實現它,而不是VS. – Jim

+0

爲什麼您的應用需要對自己的代碼進行深入瞭解? – Nzall

+0

根據我的描述,我需要一個交流#代碼的文檔圖... – Jim