0
我有以下用例覆蓋的部件:城堡溫莎:在未來
我要註冊的應用程序的所有配置之間共享的所有組件。然後,我想註冊一系列動態配置的「插件」,這些插件以IRegistration的自定義實現方式表示。
只有這樣我才能解決我的應用程序的起點。
我想插件要做的一件事是覆蓋服務實現。事情是這樣的:
public class SomePlugin {
public void Register(IKernel kernel) {
kernel.RemoveComponent(typeof(DefaultServiceImplementation).FullName);
kernel.Register(
Component.For<IService>()
.ImplementedBy<AlternateServiceImplementation>())
}
}
但是,如果任何已註冊的組件對IService依賴這不起作用。
我知道我可以先註冊插件,但這是限制其他幾個原因。我怎樣才能滿足我的具體要求?
我能拿出最好的事情是一樣的東西
kernel.ResolvingComponent += (model, a, b) => {
if(model.Service == typeof(IService))
model.Implementation = typeof(AlternateServiceImplementation);
}
我認爲這可能在某些情況下有限的工作,但它是遠遠不夠理想。
所以基本上你希望* last * registered組件是默認組件? – 2010-03-04 18:28:57
當然這是一個實現。更具體地說,我很感興趣的是,「對於先前由X1實現的組件X,嘿,使用X2作爲默認值」 – 2010-03-04 18:37:15
我的意思是它總是*最後一個註冊?或者有時候?你介意使用屬性? – 2010-03-04 19:15:44