13
Ben basit PostSharp günlüğü özelliği vardır:PostSharp özniteliklerine nasıl argüman eklerim?
[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);
}
}
Ben günlük girişine yöntemler argümanlar hakkında bilgiler ekleyerek bu özellik daha esnek olmasını istiyoruz ama onun Yalnızca gerekirse.
[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 ile sahte kod nasıl yapılacağından emin değilim. Bunu özneye nasıl aktarabilirim? Böyle bir şey bakmak için bekliyorum ama nitelik kodu içine nasıl ele biliyorum don:
[MethodLogging(ShowParameters=true)]
public void SomeCrazyMethod(int CustomerId, string SecretName) {...}
Harika cevap. Öznitelik uygulandığı yöntem içinde bu özelliğe erişmek ve ayarlamak için bir yolu var mı? –
Maalesef, özelliklerin tümü çalışma zamanında ayarlanamayacak şekilde derleme zamanında ayarlanmalı ve kullanılabilir olmalıdır. –