我的控制器在一个不同的项目中被分开,我正在使用城堡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);
}
}
然后我想将工厂重新封装到一个自己的“框架”中,以便在未来的项目中重复使用它。但是后续执行程序集没有控制器,有关如何使其解耦的任何想法吗?
我在思考类似于配置文件的东西,它指示带有控制器的程序集......
答案 0 :(得分:1)
首先,我将传递Assembly作为构造函数参数,然后我将创建一个工厂方法:
public static IControllerFactory FromAssemblyContaining<T>()
{
return new WindsorControllerFactory(typeof(T).Assembly);
}
然后使用以下命令创建控制器工厂:
WindsorControllerFactory.FromAssemblyContaining<some class, Global perhaps>();