public void Configure(IApplicationBuilder app)
        {
            var context = new ApplicationBuilderContext(app);

            foreach (var moduleDescriptor in Modules)
            {
                try
                {
                    moduleDescriptor.Instance.PreConfigure(context);
                }
                catch (Exception ex)
                {
                    throw new Exception("An error occurred during PreConfigure phase of the module " + moduleDescriptor.ModuleType.AssemblyQualifiedName + ". See the inner exception for details.", ex);
                }
            }
            foreach (var moduleDescriptor in Modules)
            {
                try
                {
                    moduleDescriptor.Instance.Configure(context);
                }
                catch (Exception ex)
                {
                    throw new Exception("An error occurred during Configure phase of the module " + moduleDescriptor.ModuleType.AssemblyQualifiedName + ". See the inner exception for details.", ex);
                }
            }
            foreach (var moduleDescriptor in Modules)
            {
                try
                {
                    moduleDescriptor.Instance.PostConfigure(context);
                }
                catch (Exception ex)
                {
                    throw new Exception("An error occurred during PostConfigure phase of the module " + moduleDescriptor.ModuleType.AssemblyQualifiedName + ". See the inner exception for details.", ex);
                }
            }
        }
 public virtual void PostConfigure(ApplicationBuilderContext context)
 {
 }