http://issues.castleproject.org/issue/MR-570

So your work-around checks if the initialisation is complete on first
page load?

On Sep 25, 7:38 am, John Simons <[email protected]> wrote:
> Hi Tim,
>
> Just had a look at your problem, and you are doing everything right.
> It looks like is a bug in the order of initialisation of services (is service 
> is
> overridden), so please do log a bug report 
> inhttp://issues.castleproject.org/issues/MR
>
> So for now the only way I can see around it is something like this:
> public class MyControllerFactory : IServiceEnabledComponent, 
> IControllerFactory
>     {
>         private IControllerTree tree;
>         private IServiceProvider provider;
>
>         public IController CreateController(string area, string controller)
>         {
>             InitialiseTree();
>             Debug.Assert(tree != null);
>             throw new NotImplementedException();
>         }
>
>         public IController CreateController(Type controllerType)
>         {
>             InitialiseTree();
>             Debug.Assert(tree != null);
>             throw new NotImplementedException();
>         }
>
>         public void Release(IController controller)
>         {
>             InitialiseTree();
>             Debug.Assert(tree != null);
>             throw new NotImplementedException();
>         }
>
>         public void Service(IServiceProvider provider)
>         {
>             this.provider = provider;
>         }
>
>         private void InitialiseTree()
>         {
>             if (tree == null)
>             {
>                 tree = (IControllerTree) provider.GetService(typeof
> (IControllerTree));
>             }
>         }
>     }
>
> I hope this helps.
>
> Cheers
> John
>
> ________________________________
> From: Tim <[email protected]>
> To: Castle Project Users <[email protected]>
> Sent: Fri, 24 September, 2010 9:09:15 PM
> Subject: Monorail: Custom ControllerFactory Initialisation
>
> I've been trying to make a custom ControllerFactory and had issues
> with finding an initialised IControllerTree to add controllers to.
>
> I decided to copy the complete DefaultControllerFactory.cs into my
> assembly and debug how it all worked. I was surprised to find that
> DefaultControllerFactory doesn't work if its selected form the
> web.config. When it starts to initialise, it too can't find an
> initialised IControllerTree.
>
> The services documentation does say that services shouldn't rely on
> any initialisation order, but it appears that this essentially what
> default services do. How should I be doing it?
>
> My current 'work-around' is to include
> "Castle.Monorail.Framework.Services.DefaultControllerTree" before my
> ControllerFactory in the web.config as this ensures it is initialised
> first!
>
> --
> You received this message because you are subscribed to the Google Groups
> "Castle Project Users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group 
> athttp://groups.google.com/group/castle-project-users?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to