我想解析一個c#文件。我唯一想要的是確定它是否包含具有特定名稱的財產;只是一個簡單的真實/虛假的迴應。或者說,因爲我會在每次運行檢查多個屬性,提取屬性名稱的列表,可幫助從c#源文件中提取屬性名稱
我以爲我可以使用CodeDomProvider
功能(F#示例)創建一個完美的解決方案:
use reader = new StreamReader(existingFile)
let codeProvider = new CSharpCodeProvider()
let codeUnit = codeProvider.Parse(reader)
不幸的是,Parse
函數沒有爲CSharpCodeProvider
實現。有沒有辦法從源文件中獲得CodeCompileUnit
?還是有另一種優雅的方式? (我本來希望避免這個問題的正則表達式)?
編輯: 我打算用它來自動生成代碼。基本上,我要在文件xyz.partial.cs中生成一個部分類。這將生成一個骨架屬性。但是,如果我想更改屬性的實現,我將剪切該屬性並將其粘貼到手工編碼的xyz.cs.重新生成生成的類時,我希望它跳過生成已移至手動編碼文件的屬性。
因此,反射是沒有問題的,因爲反射會告訴我該屬性確實存在,但不是如果它在一個或另一個文件中定義。
不過,我很想打開Expresso並給它一個鏡頭。我可以經常表達任何東西,而不是'詩句中的權力可以阻止我。 – 2010-06-10 13:39:30
您是否考慮過對源代碼的編譯版本的反思?或者這不是一個選擇?不知道反射是否提供了屬性名稱。 – 2010-06-10 13:54:14
@Moron - 這實際上應該工作得很好。 – ChaosPandion 2010-06-10 14:59:00