2010-06-18 34 views
1

假設您有時間戳功能,然後想要創建一個新函數來組合您的時間戳和Console.WriteLine()(例如,將包裝器添加到重載函數

public static void Write(string msg) 
    { 
     WriteTimeStamp(); 
     Console.WriteLine(msg); 
    } 

WriteLine()方法具有18點左右的過載,這不會在包裝函數的簽名被反射。你會如何使包裝不帶字符串並將它們傳遞給WriteLine()

回答

2

在C#4.0中,你可以使用一個動態變量(見this blog post):

public static void Write(object msg) 
{ 
    WriteTimeStamp(); 
    dynamic dynMsg = msg; 
    Console.WriteLine(dynMsg); 
} 
+0

因爲這讓我也使用默認參數,我非常喜歡這個解決方案。 – Cev 2010-06-18 09:21:59

5

您可能希望在params關鍵字,或者我可能會誤解你的問題:

public static void Write(string msg, params object[] args) 
{ 
    WriteTimeStamp(); 
    Console.WriteLine(msg, args); 
} 

這使您可以指定任何類型的0個或多個其他參數,以及Console.WriteLine(string, params object[])超載將被調用哪個漂亮很多處理所有其他人。