我想使用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 :(得分:1)
C#中的属性在您调用GetCustomAttributes
之前不会实例化,并且每次执行时都会实例化(see this question此处为SO)。
如果您想使用AOP(如标题所示),那么您需要使用一些框架,例如PostSharp,Fody,SheepAspect等。
如果您使用的是ASP.NET MVC,那么您还可以使用内置的ActionFilter
类,但仅限于Controller方法。