そこで、私は新しいプロジェクトを開始し、過去数年間に学んだいくつかのことを実装しようとしています。その最初のプロジェクトは、IoCにCastleを使用することです。
多数のエンドプロジェクト(コンソールアプリ、Webサイト)で共有される中央の「コア」クラスが必要です。だから私はここに2つの質問があると思います:
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;
}
}