Exemple #1
0
        public static TServiceContext Create <TServiceContext>(params object[] stubServices)
            where TServiceContext : ServiceContextBase, new()
        {
            var services = Program.AddServices(new ServiceCollection());

            foreach (var stubService in stubServices)
            {
                services.AddStubs(stubService);
            }

            var serviceProvider = services.BuildServiceProvider();

            Program.ConfigureApplicationCommands(serviceProvider.GetRequiredService <CommandLineApplicationServices>());

            var serviceContext = new TServiceContext();

            foreach (var property in serviceContext.GetType().GetTypeInfo().DeclaredProperties)
            {
                if (property.CanWrite)
                {
                    var service = serviceProvider.GetRequiredService(property.PropertyType);
                    property.SetValue(serviceContext, service);
                }
            }

            return(serviceContext);
        }