public InterceptorCreatorFactory(IInterceptorConfiguration configuration,
                                  IEnumerable <IInterceptorConfigurationHandler> handlers, IServiceProvider serviceProvider)
 {
     this.configuration   = configuration;
     this.handlers        = handlers;
     this.serviceProvider = serviceProvider;
 }
 private IEnumerable <IInterceptBox> CreateBoxs(IInterceptorConfiguration configuration)
 {
     foreach (var group in configuration.Interceptors.Distinct().GroupBy(i => i.InterceptorType))
     {
         yield return(CreateBox(group, configuration.GlobalWhitelists, configuration.GlobalBlacklists));
     }
 }
        public void Handle(IInterceptorConfiguration configuration)
        {
            var attributes = AppDomain.CurrentDomain.GetAssemblies()
                             .Union(assemblies)
                             .SkipNull()
                             .Distinct()
                             .SelectMany(i =>
            {
                try
                {
                    return(i.ExportedTypes);
                }
                catch
                {
                    return(new Type[0]);
                }
            })
                             .Where(i => typeof(InterceptorBaseAttribute).IsAssignableFrom(i) &&
                                    i != typeof(InterceptorBaseAttribute))
                             .Distinct();

            foreach (var att in attributes)
            {
                configuration.Interceptors.AddType(att);
            }
        }