Esempio n. 1
0
        public override void SetRiderFactory <TRider>(IRegistrationRiderFactory <TRider> riderFactory)
        {
            if (riderFactory == null)
            {
                throw new ArgumentNullException(nameof(riderFactory));
            }

            ThrowIfAlreadyConfigured <TRider>();

            IRiderRegistrationContext CreateRegistrationContext(IComponentContext context)
            {
                var registration = CreateRegistration(context.Resolve <IConfigurationServiceProvider>());

                return(new RiderRegistrationContext(registration, Registrations));
            }

            Builder.Register(provider => Bind <TBus, TRider> .Create(CreateRegistrationContext(provider)))
            .SingleInstance();

            Builder.Register(provider =>
                             Bind <TBus> .Create(riderFactory.CreateRider(provider.Resolve <Bind <TBus, TRider, IRiderRegistrationContext> >().Value)))
            .SingleInstance();

            Builder.Register(provider => Bind <TBus> .Create(provider.Resolve <IBusInstance <TBus> >().GetRider <TRider>()))
            .SingleInstance();
        }
Esempio n. 2
0
        public virtual void SetRiderFactory <TRider>(IRegistrationRiderFactory <TRider> riderFactory)
            where TRider : class, IRider
        {
            if (riderFactory == null)
            {
                throw new ArgumentNullException(nameof(riderFactory));
            }

            ThrowIfAlreadyConfigured <TRider>();

            IRiderRegistrationContext CreateRegistrationContext(IComponentContext context)
            {
                var registration = CreateRegistration(context.Resolve <IConfigurationServiceProvider>());

                return(new RiderRegistrationContext(registration, Registrations));
            }

            var registrationKey = typeof(TRider).Name;

            Builder.Register(CreateRegistrationContext)
            .Keyed <IRiderRegistrationContext>(registrationKey)
            .SingleInstance();
            Builder.Register(context => riderFactory.CreateRider(context.ResolveKeyed <IRiderRegistrationContext>(registrationKey)))
            .As <IBusInstanceSpecification>()
            .SingleInstance();
            Builder.Register(context => context.Resolve <Bind <IBus, IBusInstance> >().Value.GetRider <TRider>())
            .As <TRider>()
            .SingleInstance();
        }
        public override void SetRiderFactory <TRider>(IRegistrationRiderFactory <TRider> riderFactory)
        {
            if (riderFactory == null)
            {
                throw new ArgumentNullException(nameof(riderFactory));
            }

            ThrowIfAlreadyConfigured <TRider>();

            IRiderRegistrationContext CreateRegistrationContext(IServiceProvider provider)
            {
                var registration = CreateRegistration(provider.GetRequiredService <IConfigurationServiceProvider>());

                return(new RiderRegistrationContext(registration, Registrations));
            }

            Collection.AddSingleton(provider => Bind <TBus, TRider> .Create(CreateRegistrationContext(provider)));
            Collection.AddSingleton(provider =>
                                    Bind <TBus> .Create(riderFactory.CreateRider(provider.GetRequiredService <Bind <TBus, TRider, IRiderRegistrationContext> >().Value)));
            Collection.AddSingleton(provider => Bind <TBus> .Create(provider.GetRequiredService <IBusInstance <TBus> >().GetRider <TRider>()));
        }