所以,我开始了一个新项目,尝试实现我在过去几年中学到的一些东西,其中第一个是将 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;
        }
    }