2016-04-26 115 views
0

我知道如何用Autofac做到這一點,但與Castle沒有關係。Castle Windsor註冊多種類型的基礎接口?

public interface IAmBaseInterface {} 
public interface IAmInterface : IAmBaseInterface {...} 
public class AmClass : IAmInterface {...} 

我想使用IAmBaseInterface註冊實現AmClass(以及任何其他實現)。這可能嗎? 我嘗試了以下,但它沒有註冊類型。

container.Register(Classes.FromThisAssembly().BasedOn<IAmBaseInterface>() 
    .WithServiceAllInterfaces(); 

試過這也會類似於AutoFac,但沒有成功。

container.Register(Classes.FromThisAssembly() 
    .Where(t => typeof(IAmBaseInterface).IsAssignableFrom(t)).WithService.AllInterfaces(); 
+0

我試過了你的第一次嘗試,它對我很有用。你如何解決? – lxalln

回答

0

我意識到,我已經在我的代碼,而不是Classes.FromThisAssembly使用Classes.From(鍵入[] ...)作爲例子。顯然它不會掃描多個程序集以查找基礎實現。我還發現它不會掃描多個程序集以查找內部實現,但這是一個附註。

+0

如果你明確告訴它,它可以做到這兩件事。 –

相關問題