相关疑难解决方法(0)

使用Castle Windsor在ASP.NET MVC中设置控制反转(IoC)

我正在讨论Sanderson的Pro ASP.NET MVC框架,在第4章他讨论了创建一个自定义控制器工厂,似乎现在不推荐使用原始方法,AddComponentLifeStyleAddComponentWithLifeStyle用于注册控制器:

public class WindsorControllerFactory : DefaultControllerFactory
{
    IWindsorContainer container;

    public WindsorControllerFactory()
    {
        container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));

        // register all the controller types as transient
        var controllerTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                              where typeof(IController).IsAssignableFrom(t)
                              select t;

        //[Obsolete("Use Register(Component.For<I>().ImplementedBy<T>().Named(key).Lifestyle.Is(lifestyle)) instead.")]
        //IWindsorContainer AddComponentLifeStyle<I, T>(string key, LifestyleType lifestyle) where T : class;
        foreach (Type t in controllerTypes)
        {
            container.Register(Component.For<IController>().ImplementedBy<???>().Named(t.FullName).LifeStyle.Is(LifestyleType.Transient));
        }
    }

    // Constructs the controller instance needed to service each request
    protected override IController …
Run Code Online (Sandbox Code Playgroud)

reflection asp.net-mvc castle-windsor inversion-of-control

8
推荐指数
1
解决办法
2407
查看次数