public static IServiceCollection AddShardedEntities(this IServiceCollection serviceCollection, Action <IShardedEntityRegistryBuilder> builderDelegate) { serviceCollection.AddSingleton(services => { // TODO: this can just be registered and invoked on the other end... var actorSystem = services.GetService <ActorSystem>(); // TODO: Clean up config so it's directed. var builder = new ShardedEntityRegistryBuilder(actorSystem, services.GetService <IConfiguration>(), services.GetService <Config>()); builderDelegate.Invoke(builder); return(builder.Build(services)); }); return(serviceCollection); }
public static IServiceCollection AddShardedEntities(this IServiceCollection services, Action <IShardedEntityRegistryBuilder> builderDelegate) { if (WasCalled) { throw new Exception("ShardedEntitiesModule already called"); } WasCalled = true; services.AddSingleton(x => { // TODO: this can just be registered and invoked on the other end... var actorSystem = x.GetService <ActorSystem>(); // TODO: Clean up config so it's directed. var builder = new ShardedEntityRegistryBuilder(actorSystem, x.GetService <IConfiguration>(), x.GetService <Config>()); builderDelegate.Invoke(builder); return(builder.Build()); }); return(services); }