I am completely a newbie when it comes to using ioc frameworks. For one my hobby projects i was working on using asp.net mvc, i decided to use castle.windsor for the dependency injection. I created a class deriving from IControllerFactory as below:
internal class WindsorControllerFactory:IControllerFactory
{
WindsorContainer container;
public WindsorControllerFactory()
{
container = new WindsorContainer(new XmlInterpreter(new ConfigResource(("castle"))));
// Also register all the controller types as transient
foreach (Type t in Assembly.GetExecutingAssembly().GetTypes())
if (typeof(IController).IsAssignableFrom(t)) // Is it a controller?
container.AddComponentWithLifestyle(t.Name, t,
LifestyleType.Transient);
}
#region IControllerFactory Members
public IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName)
{
string name = controllerName + "Controller";
return container.Resolve<IController>(name);
}
public void ReleaseController(IController controller)
{
IDisposable disp = controller as IDisposable;
if (disp != null)
disp.Dispose();
}
#endregion
}
The interesting thing is my urls become case sensitive suddenly :) so /home/list is not matching whereas /Home/List is matching route. Fix? dont know yet hehe