我目前正在开发一个项目,我们希望添加PostSharp功能。使用Postharp编译VS2012中的c#项目时出现错误
我已经建立了我的Postsharp属性为使
[Serializable]
public class NLogTraceAttribute : OnMethodBoundaryAspect
{
private readonly string _logLevel;
ILogger logger;
public NLogTraceAttribute(string logLevel)
{
_logLevel = logLevel;
logger = new Logger("TraceAttribute");
}
public override void OnEntry(MethodExecutionArgs args)
{
LogAction("Enter", args);
}
public override void OnExit(MethodExecutionArgs args)
{
LogAction("Leave", args);
}
private void LogAction(string action, MethodExecutionArgs args)
{
var argumentsInfo = args.GetArgumentsInfo();
logger.Log(_logLevel, "{0}: {1}.{2}{3}", action, args.Method.DeclaringType.Name, args.Method.Name, argumentsInfo);
}
}
,并试图编译项目我收到以下错误然而,当用它作为
[NLogTrace(NLogLevel.Debug)]
:
Error 26 Cannot serialize the aspects: Type 'NLog.Logger' in Assembly
'NLog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c'
is not marked as serializable..
任何帮助,将不胜感激
考虑使用PostSharp-诊断 - 工具包(问题http://www.sharpcrafters.com/blog/post/Configuring-PostSharp-Diagnostics- Toolkits.aspx)而不是编写自己的实现。顺便说一句,它是开源的。 –