internal ClusterActorSystem( Assembly[] assemblies, IServiceProvider serviceProvider, ActorMiddlewarePipeline pipeline, IActorRefMiddleware middleware = null) : base(assemblies, serviceProvider, middleware) { Register(pipeline, assemblies); }
void Register(ActorMiddlewarePipeline pipeline, IEnumerable <Assembly> assemblies) { foreach (var each in assemblies.SelectMany(x => x.GetTypes().Where(IsActorGrain))) { var implementation = new ActorGrainImplementation(each, pipeline.Middleware(each)); implementations.Add(each, implementation); } bool IsActorGrain(Type type) => !type.IsAbstract && typeof(ActorGrain).IsAssignableFrom(type); }