2011-08-12 16 views
1

我正在尋找在C#中執行以下操作的最佳方法。在任意級別註釋C#代碼而不會過多地模糊代碼?

說我有一組特定的指令:

int a = 1; 
int b = 2; 
if (a==b) {return;} 
... 

我需要得到每個指令或指令集的一些信息。所以我註釋代碼,大致如下:

Console.WriteLine("a"); 
int a = 1; 
Console.WriteLine("a"); 
int b = 2; 
Console.WriteLine("if"); 
if (a==b) { 
Console.WriteLine("ret"); 
    return;} 
... 

現在假設我需要有關於每個指令的一些方法更加全面的信息,實際上是幾類,我想即使傳遞一些信息,這些類。對代碼進行註釋確實會將代碼混淆到幾乎不可讀的程度。例如,想象一下在指令之間的大量打印。

最後,我的問題是:有沒有一種方法(在這裏有[Attributes]的幫助?)來註釋具有任意級別的註釋複雜性的代碼,而不會混淆它?我可以想像一些屬性,看起來像

[Class.variable("a")] 
int a = 1; 
[Class.variable("a")] 
int b = 2; 
[Class.instruction("if")] 
if (a==b) { 
    [Class.instruction("ret")] 
    return;} 
... 

雖然每個類都做了很多東西嗎?如果上面的atts的例子工作,有人可以給我一個例子說明它是如何工作的「真實的」,而不是僞代碼?

非常感謝。

+4

你想在這裏解決什麼問題? –

+2

您不能將屬性添加到單個代碼段,只能添加到程序集,類型和成員。您不能將屬性添加到代碼行中。 –

+0

@Lasse。也許如果你告訴我什麼部分不清楚,我可以嘗試重新措辭?我的意思是說「它會​​像'屬性一樣工作,但現在我知道它不能成爲屬性。我不介意*我如何註釋代碼,我只需要一個簡短的方法來做到這一點。可以把它看作是類固醇上的「調試printfs」。 –

回答

0

如果你想通過你寫(生成圖表)其他一些程序來讀取的代碼,我想你最好是使用意見,可能是一個「特殊」的那種人喜歡//:,或者說是。

我通常會建議不要自己解析源代碼,但我認爲這是唯一的方法。雖然Mono可能對此有所幫助:它的編譯器是開源的,您可以將它用於您的目的。

0

如果您正在調試您的代碼,那麼設置制動點並配置brakepoints上下文菜單中的「When Hit ..」項目可能很有用。這一個讓你打印出一個文本到輸出窗口而不會破壞代碼的執行。

+0

或者可能只是設置一個普通的斷點,然後逐步執行有問題的代碼就是您要查找的內容? –

0

你不能使用屬性來裝飾語句,不確定是否有一種乾淨的方式來記錄你想象中的語句。你想用這種詳細的日誌記錄來完成什麼?