所以,我开始了一个新项目,尝试实现我在过去几年中学到的一些东西,其中第一个是将 Castle 用于 IoC。
我想要一个中央“核心”课程,它将在众多最终项目(控制台应用程序、网站)中共享。所以我想,这里有两个问题:
a)这种方法是否正确 b)我的实施是否正确。
我知道这是一个非常小的课程,但我想从一开始就正确。
public static class Global {
static IWindsorContainer _Container;
static int ContainerInitalised = 0;
static string ServicesFile;
public static IWindsorContainer Container{
get{
if (Interlocked.CompareExchange(ref ContainerInitalised, 1, 0) == 0) {
Collection<IWindsorInstaller> installers = new Collection<IWindsorInstaller> {
{ FromAssembly.InDirectory(new AssemblyFilter("Installers")) }
};
if (!String.IsNullOrWhiteSpace(ServicesFile)) {
installers.Add(Configuration.FromXmlFile(ServicesFile));
}
_Container = new WindsorContainer().Install(installers.ToArray());
}
return _Container;
}
}
public static void Initialise(string servicesFile) {
ServicesFile = servicesFile;
}
}