2014-03-25 33 views
0

考慮我使用下面的註冊代碼:CastleWindsor:FromAssemblyInDirectory - 如何從多個目錄添加?

container.Install(FromAssembly.InDirectory(new AssemblyFilter(AppDomain.CurrentDomain.BaseDirectory)), 
      FromAssembly.InDirectory(new AssemblyFilter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Jobs")))); 

這是一幫註冊我做的,在這裏我要選的DLL無論從基本目錄以及一個「喬布斯」的最簡單的行子目錄。用於合併兩個組裝過濾器的語法(如果有的話)是什麼?因爲我顯然不想重複註冊代碼....並且它的註冊量越來越大。

我想要自己寫一個小類去做,但是所有的函數都把AssemblyFilter作爲參數而不是IAssemblyProvider?所以沒有去那裏.....

回答

1

我不知道在溫莎的任何支持,但爲了防止註冊的重複我總是提取註冊到輔助函數與目錄參數。例如。

static BasedOnDescriptor Connectors(string directory) 
{ 
    return Classes. 
     FromAssemblyInDirectory(new AssemblyFilter(directory)). 
     BasedOn<IConnector>(). 
     LifestyleTransient(). 
     ConfigureDiagnostics(); 
} 

,然後註冊它想:

container.Register(
    Connectors("Connectors"), 
    Connectors(".")); 
+0

啊。謝謝,這確實有助於可讀性。 – Vivek

相關問題