Skip to content

Instantly share code, notes, and snippets.

@davybrion
Created September 3, 2012 19:00
Show Gist options
  • Select an option

  • Save davybrion/3612352 to your computer and use it in GitHub Desktop.

Select an option

Save davybrion/3612352 to your computer and use it in GitHub Desktop.
code snippets for "Adding behavior without modifying existing code with Windsor" post
public class LoggingInterceptor : Castle.Core.Interceptor.IInterceptor
{
private readonly ILogger logger;
public LoggingInterceptor(ILogger logger)
{
this.logger = logger;
}
public void Intercept(IInvocation invocation)
{
string methodName =
invocation.TargetType.FullName + "." + invocation.GetConcreteMethod().Name;
Log("Entering method: " + methodName);
invocation.Proceed();
Log("Leaving mehod: " + methodName);
}
private void Log(string line)
{
logger.WriteLine(DateTime.Now.TimeOfDay + " " + line);
}
}
<component id="ILogger" service="Components.ILogger, Components"
type="Components.Logger, Components" />
<component id="LoggingInterceptor" service="Components.LoggingInterceptor, Components"
type="Components.LoggingInterceptor, Components"
lifestyle="transient" />
<component id="IOrderRepository"
service="Components.IOrderRepository, Components"
type="Components.OrderRepository, Components">
<interceptors>
<interceptor>${LoggingInterceptor}</interceptor>
</interceptors>
</component>
var repository = Container.Resolve<IOrderRepository>();
repository.GetAll();
repository.FindOne(new Criteria());
repository.FindMany(new Criteria());
repository.GetById(Guid.Empty);
repository.Store(null);
21:53:42.6942016 Entering method: Components.OrderRepository.GetAll
21:53:42.6942016 Leaving mehod: Components.OrderRepository.GetAll
21:53:42.6942016 Entering method: Components.OrderRepository.FindOne
21:53:42.6942016 Leaving mehod: Components.OrderRepository.FindOne
21:53:42.6942016 Entering method: Components.OrderRepository.FindMany
21:53:42.6942016 Leaving mehod: Components.OrderRepository.FindMany
21:53:42.7042160 Entering method: Components.OrderRepository.GetById
21:53:42.7042160 Leaving mehod: Components.OrderRepository.GetById
21:53:42.7042160 Entering method: Components.OrderRepository.Store
21:53:42.7042160 Leaving mehod: Components.OrderRepository.Store
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment