13
나는 간단한 PostSharp 로깅 속성이 있습니다PostSharp 속성에 인수를 어떻게 추가합니까?
[Serializable]
public class MethodLoggingAttribute : OnMethodBoundaryAspect
{
private ILog _logger;
public override void OnEntry(MethodExecutionEventArgs eventArgs)
{
_logger = LogManager.GetLogger(eventArgs.Method.DeclaringType.ToString());
_logger.DebugFormat("Entered {0}", eventArgs.Method.Name);
}
}
내가 로그 항목 방법 인수에 대한 정보를 추가하여이 속성이 더 유연하게 할을하지만 필요한 경우에만 가능합니다.
[Serializable]
public class MethodLoggingAttribute : OnMethodBoundaryAspect
{
private ILog _logger;
public override void OnEntry(MethodExecutionEventArgs eventArgs)
{
_logger = LogManager.GetLogger(eventArgs.Method.DeclaringType.ToString());
// if ShowParameters = true
_logger.DebugFormat("Entered {0} with args:{1}", eventArgs.Method.Name, args);
// else
_logger.DebugFormat("Entered {0}", eventArgs.Method.Name);
// endif
}
}
IF를 사용하는 의사 코드는 어떻게 수행해야할지 모르겠다. 이것을 속성에 어떻게 전달할 수 있습니까? 나는이 같은 것을보고 그것을 기대하고있어하지만 난 속성 코드 내부에 그것을 처리하는 방법을 알고 돈 :
[MethodLogging(ShowParameters=true)]
public void SomeCrazyMethod(int CustomerId, string SecretName) {...}
좋은 답변입니다. 속성이 적용된 메소드 내에서 해당 속성에 액세스하여 설정하는 방법이 있습니까? –
불행히도 모든 속성 속성이 컴파일 타임에 설정되어 사용 가능하지 않아야 런타임에 설정할 수 없습니다. –