2013-06-05 51 views
1

我想使用AOP爲我的所有方法記錄異常。我已經創建了相同的屬性如下:使用面向方面編程的日誌記錄異常

[AttributeUsage(AttributeTargets.All)] 
public class ClsLogger : System.Attribute 
{ 
    private string _exMsg; 
    public ClsLogger(string exMsg) 
    { 
     // 
     // TODO: Add constructor logic here 
     // 
     _exMsg = exMsg; 
     LogError(); 
    } 
    public void LogError() 
    { 
     // This methods logs exception 
     // Log Exception 
    } 
} 

最後,我想用這個日誌記錄屬性來記錄我的應用程序的方法異常消息。我如何將異常消息傳遞給atrribute,因爲它不是固定的字符串,而是可變的? 有人可以幫忙嗎?

+0

'您應該始終將後綴Attribute添加到自定義屬性類中.' - http://msdn.microsoft.com/en-us/library/w875ab50(v=vs.71).aspx –

+0

可能是很好的做法,但並不是絕對必要的 –

回答

1

C#中的屬性在您調用GetCustomAttributes之前不會實例化,並且它們在每次執行時都會實例化(此處SO上的see this question)。

如果你想使用AOP(如您的標題所示),那麼你就需要使用一些框架,像PostSharpFodySheepAspect

如果您正在使用ASP.NET MVC,然後有一個內置的ActionFilter類,您也可以使用,但只能在Controller方法上使用。