internal ClusterActorSystem(
            ClusterConfiguration configuration,
            Assembly[] assemblies,
            Action <IServiceCollection> di,
            ActorInvocationPipeline pipeline,
            IActorRefInvoker invoker)
            : base(invoker)
        {
            Pipeline = pipeline;

            using (Trace.Execution("Orleans silo initialization"))
            {
                var builder = new SiloHostBuilder()
                              .UseConfiguration(configuration)
                              .ConfigureServices(services =>
                {
                    services.AddSingleton <IActorSystem>(this);
                    services.AddSingleton(this);
                    services.TryAddSingleton <IActorActivator>(x => new DefaultActorActivator(x));
                    services.AddSingleton <Func <MethodInfo, InvokeMethodRequest, IGrain, string> >(DashboardIntegration.Format);

                    di?.Invoke(services);
                });

                builder.ConfigureApplicationParts(apm => apm
                                                  .AddFromAppDomain()
                                                  .WithCodeGeneration());

                Host = builder.Build();
            }

            Silo = Host.Services.GetRequiredService <Silo>();
            Initialize(Host.Services);
        }
        internal ClusterActorSystem(ClusterConfiguration configuration, Action <IServiceCollection> di, ActorInvocationPipeline pipeline, IActorRefInvoker invoker)
            : base(invoker)
        {
            this.di  = di;
            Pipeline = pipeline;

            current = this;
            configuration.UseStartupType <Startup>();

            using (Trace.Execution("Orleans silo initialization"))
            {
                Host = new SiloHost(Dns.GetHostName(), configuration);
                Host.LoadOrleansConfig();
                Host.InitializeOrleansSilo();
            }

            Silo = Host.GetSilo();
            Initialize(Silo.GetServiceProvider());
        }