我想注入不同的字符串到我的每个模块的构造函数。我注册了构建模块的工厂方法。然后我可以打电话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中,我只是将该方法指向默认实现的一个示例,因为它稍微复杂一点,因为模块已在请求容器中注册,而不是主应用程序容器。 –