private void FireContainerInitialized(HttpApplication instance, DefaultMonoRailContainer container)
		{
			var events = instance as IMonoRailContainerEvents;

			if (events != null)
			{
				events.Initialized(container);
			}
		}
		/// <summary>
		/// Creates the default service container.
		/// </summary>
		/// <param name="userServiceProvider">The user service provider.</param>
		/// <param name="appInstance">The app instance.</param>
		/// <returns></returns>
		protected virtual IMonoRailContainer CreateDefaultMonoRailContainer(IServiceProviderEx userServiceProvider,
																			HttpApplication appInstance)
		{
			var container = new DefaultMonoRailContainer(userServiceProvider);

			container.UseServicesFromParent();
			container.InstallPrimordialServices();
			container.Configure(Configuration);

			FireContainerCreated(appInstance, container);

			// Too dependent on Http and MR surroundings services to be moved to Container class
			if (!container.HasService<IServerUtility>())
			{
				container.AddService<IServerUtility>(new ServerUtilityAdapter(appInstance.Context.Server));
			}
			if (!container.HasService<IRoutingEngine>())
			{
				container.AddService<IRoutingEngine>(RoutingModuleEx.Engine);
			}

			container.InstallMissingServices();
			container.StartExtensionManager();

			FireContainerInitialized(appInstance, container);

			return container;
		}
		void FireContainerInitialized( HttpApplication instance, DefaultMonoRailContainer container )
		{
			ExecuteContainerEvent( 
				instance.GetType().GetMethod( "MonoRail_ContainerInitialized" ), 
				instance, 
				container );
		}
Ejemplo n.º 4
0
		private void FireContainerCreated(HttpApplication instance, DefaultMonoRailContainer container)
		{
			IMonoRailContainerEvents events = instance as IMonoRailContainerEvents;

			if (events != null)
			{
				events.Created(container);
			}
		}
		static void ExecuteContainerEvent( MethodInfo eventMethod, HttpApplication instance, DefaultMonoRailContainer container )
		{
			if ( eventMethod != null )
			{
				if ( eventMethod.IsStatic )
				{
					eventMethod.Invoke( null, new object[] { container } );
				}
				else
				{
					eventMethod.Invoke( instance, new object[] { container } );
				}
			}
		}