public void Intercept(IInvocation invocation) { var method = invocation.GetImplementationMethod(); var attribute = method.GetCustomAttribute <MyCacheAttribute>(); if (attribute == null) { // Calls the decorated instance. invocation.Proceed(); } else { // caching here } }