| 123456789101112131415161718192021222324252627282930313233 |
- using Castle.DynamicProxy;
- using System.Linq;
- namespace Abp.EntityHistory
- {
- internal class EntityHistoryInterceptor : IInterceptor
- {
- public IEntityChangeSetReasonProvider ReasonProvider { get; set; }
- public EntityHistoryInterceptor()
- {
- ReasonProvider = NullEntityChangeSetReasonProvider.Instance;
- }
- public void Intercept(IInvocation invocation)
- {
- var methodInfo = invocation.MethodInvocationTarget;
- var useCaseAttribute = methodInfo.GetCustomAttributes(true).OfType<UseCaseAttribute>().FirstOrDefault()
- ?? methodInfo.DeclaringType.GetCustomAttributes(true).OfType<UseCaseAttribute>().FirstOrDefault();
- if (useCaseAttribute?.Description == null)
- {
- invocation.Proceed();
- return;
- }
- using (ReasonProvider.Use(useCaseAttribute.Description))
- {
- invocation.Proceed();
- }
- }
- }
- }
|