我想注入不同的字符串到我的每個模塊的構造函數。我註冊了構建模塊的工廠方法。然後我可以打電話container.Resolve<T>()
,一切都很好。出於某種原因,儘管當南希試圖解決我的模塊,它拋出的錯誤註冊特定模塊構造函數
Nancy.TinyIoc.TinyIoCResolutionException:無法解析類型: Plugin.HomeModule ---> Nancy.TinyIoc.TinyIoCResolutionException: 無法解析類型:System
public class HomeModule : NancyModule
{
public HomeModule(string text)
{
}
}
protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
base.ConfigureApplicationContainer(container);
container.Register<HomeModule>((ctr, param) => { return new HomeModule("text"); });
HomeModule module = container.Resolve<HomeModule>();
}
我自己也嘗試做了登記ConfigureRequestContainer()
具有相同的結果。我試過container.Register<HomeModule>(new HomeModule("some text"));
以及AsSingleton()
。我可以使用container.Register<string>("text")
註冊一個字符串類型的實現,但是這會將相同的字符串注入到所有模塊中。
如何註冊一個模塊構造函數以便Nancy可以解決?
由於'INancyModule GetModule(TinyIoCContainer容器,類型moduleType)'被密封意思的最佳方式爲我寫方法的自定義實現是從'NancyBootstrapperWithRequestContainerBase'直接導出? –
Despertar
只需創建您自己的目錄實現並將其註冊到ConfigureApplicationContainer中,我只是將該方法指向默認實現的一個示例,因爲它稍微複雜一點,因爲模塊已在請求容器中註冊,而不是主應用程序容器。 –