ControllerFactory将控制器分隔在不同的项目中

时间:2009-08-03 11:54:54

标签: asp.net asp.net-mvc

我的控制器在一个不同的项目中被分开,我正在使用城堡windsor,一切都很好,我在同一个项目中有一个典型的控制器工厂,如下所示:

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

        var controllerTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                          where typeof(IController).IsAssignableFrom(t)
                          select t;

        foreach (Type t in controllerTypes)
        {
            container.AddComponentLifeStyle(t.FullName, t, Castle.Core.LifestyleType.Transient);
        }
    }

然后我想将工厂重新封装到一个自己的“框架”中,以便在未来的项目中重复使用它。但是后续执行程序集没有控制器,有关如何使其解耦的任何想法吗?

我在思考类似于配置文件的东西,它指示带有控制器的程序集......

1 个答案:

答案 0 :(得分:1)

首先,我将传递Assembly作为构造函数参数,然后我将创建一个工厂方法:

public static IControllerFactory FromAssemblyContaining<T>()
{
    return new WindsorControllerFactory(typeof(T).Assembly);
}

然后使用以下命令创建控制器工厂:

WindsorControllerFactory.FromAssemblyContaining<some class, Global perhaps>();