Business Logic Toolkit for .NET
www.bltoolkit.net
|  Home   |  Download   |  Documentation   |  Discussions   |  License   |

  Source.Aspects.NoInterceptionAttribute.cs

 
using System;

using BLToolkit.TypeBuilder.Builders;

namespace BLToolkit.Aspects
{
    [AttributeUsage(
        AttributeTargets.Class |
        AttributeTargets.Interface |
        AttributeTargets.Property |
        AttributeTargets.Method,
        AllowMultiple=true)]
    public class NoInterceptionAttribute : InterceptorAttribute
    {
        public NoInterceptionAttribute()
            : base(null, 0)
        {
        }

        public NoInterceptionAttribute(Type interceptorType, InterceptType interceptType)
            : base(interceptorType, interceptType)
        {
        }

        public override IAbstractTypeBuilder TypeBuilder
        {
            get { return new NoInterceptionAspectBuilder(InterceptorType, InterceptType); }
        }

        private class NoInterceptionAspectBuilder : Builders.InterceptorAspectBuilder
        {
            public NoInterceptionAspectBuilder(Type interceptorType, InterceptType interceptType)
                : base(interceptorType, interceptType, null, TypeBuilderConsts.Priority.Normal, false)
            {
            }

            public override void Build(BuildContext context)
            {
                if (context.Step == BuildStep.Begin || context.Step == BuildStep.End)
                    base.Build(context);
            }
        }
    }
}
 
© 2010 www.bltoolkit.net
support@bltoolkit.net