3
時IService的所有的實現都是公開的該登記工作:溫莎城堡:如何註冊內部實現
AllTypes
.Of<IService>()
.FromAssembly(GetType().Assembly)
.WithService.FirstInterface()
例如:
public interface IService {}
public interface ISomeService : IService {}
public class SomeService : ISomeService {}
解決ISomeService返回SomeService的一個實例。
但是,如果SomeService類是內部的,容器將引發異常,指出ISomeService未註冊。
那麼是否有任何方法來註冊公共接口的內部實現?
我不明白。如果我使用Component.For .ImplementedBy (),一切正常。只有當我使用AllTypes時,我纔有這個問題。還要注意,在這種情況下的註冊是在與實現相同的程序集中完成的。這兩個事實不應該足以讓內核找到內部類型嗎? –
shovavnik
2009-12-03 15:05:11
將城堡稱爲友善集會似乎也很奇怪。 – shovavnik 2009-12-03 15:10:06
當你使用Component.For註冊時,你在代碼所在的程序集的上下文中。 AllTypes.Of在Castle組件的上下文中執行。 – 2009-12-03 16:00:54