2011-04-19 92 views
1

我們有一個應用程序,它在啓動時將許多代碼類編譯到內存組件中。我試圖在Castle Windsor註冊這些類型,但它不能實例化它們;它說類型類型找不到。Castle Windsor和從內存組件中註冊類型;可能嗎?

有誰知道這是可能的嗎? 我正在使用一個XML配置文件,並且在實例化Windsor容器之前已經編譯了DLL。 下面是我正在使用的配置示例;這裏我沒有在類型聲明中指定DLL名稱,因爲磁盤上沒有物理DLL。

<!-- Register the Filtering provider, which is specified in the custom script --> 
    <component id="FilteringProvider" 
       type="Optimus.Scripts.Filtering.FilteringProvider" 
       service="Optimus.Filtering.Lib.IFilteringProvider, Optimus.Filtering.Lib" 
       > 
    </component> 

親切的問候 諾埃爾

+0

您是否嘗試過使用代碼註冊組件? – mathieu 2011-04-19 12:26:55

+0

我沒有通過代碼嘗試過;因爲這是外部註冊的要求。無論如何,我會放棄它,看看我能否以這種方式實現它;但我真的在尋找外部註冊。 – Bigtoe 2011-04-19 14:29:37

+0

偏離主題,但我很好奇爲什麼你需要在配置註冊? – 2011-04-19 21:22:46

回答

1

您可以從代碼註冊組件,特定組件:

container.Register(
    AllTypes.Of<IService>() 
    .FromAssembly(myAssemly)); 

在這裏,你會通過你的動態編譯的程序集。

http://docs.castleproject.org/Windsor.Registering-components-by-conventions.ashx

+0

感謝mathieu。看起來這將對我們有用;如果我們假設編譯的DLL中只有一個特定類型的服務實例。我們還需要升級到最新版本的Castle。 – Bigtoe 2011-04-19 15:21:02

相關問題