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(); }
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>())); }