Autofac.ContainerBuilder.RegisterCallback C# (CSharp) Method

RegisterCallback() public method

public RegisterCallback ( Action configurationCallback ) : void
configurationCallback Action
return void
        public virtual void RegisterCallback(Action<IComponentRegistry> configurationCallback);

Usage Example

        protected override void Load(ContainerBuilder builder)
        {
            //builder.RegisterType<LogHealthTrackingService>()
            //    .As<IHealthTrackingService>()
            //    .SingleInstance();

            builder.RegisterType<MetricsHealthTrackingService>()
                .As<IHealthTrackingService>()
                .SingleInstance();

            builder.RegisterType<FrequencyTrackHelper>().InstancePerDependency();
            builder.RegisterType<DurationTrackHelper>().InstancePerDependency();

            builder.RegisterType<SchedulerServiceTracker>().SingleInstance();
            builder.RegisterType<PerformanceCountersTracker>().SingleInstance();

            builder.RegisterType<RandomTracker>().SingleInstance();

            builder.RegisterType<BandwidthTrackerDecorator>()
                .Named<IBrowsingSessionDecorator>("BandwidthTracker").SingleInstance();

            builder.RegisterCallback(
                (c) =>
                    {
                        var activityLogRegistration =
                            c.Registrations.Where(r => r.Activator.LimitType == typeof(ActivityLogService))
                                .FirstOrDefault();
                        activityLogRegistration.Activated +=
                            (s, x) =>
                                {
                                    var logFreq = x.Context.Resolve<FrequencyTrackHelper>();
                                    logFreq.Start(TimeSpan.FromMinutes(1), "logFreq");
                                    (x.Instance as ActivityLogService)
                                        .OnNewLog += (_) => logFreq.Notify();
                                };

                        var browsingSessionRegistration =
                            c.Registrations.Where(r => r.Activator.LimitType == typeof (StatefullBrowsingSessionWrapper))
                                .FirstOrDefault();
                        browsingSessionRegistration.Activating +=
                            (s,x) =>
                                {
                                    (x.Instance as IBrowsingSession)
                                        .AddDecorator(x.Context.ResolveNamed<IBrowsingSessionDecorator>("BandwidthTracker"));
                                };
                    });
        }
All Usage Examples Of Autofac.ContainerBuilder::RegisterCallback