我试图为DryIoc创建一个nancy bootstrapper(v2.0预览版)。一般来说,大多数事情看起来都很简单,但是DryIoc似乎并没有明显支持Nancy为其引导所依赖的事情之一。
当面对具有两个相同长度的类型时,内置的微型容器将会被打开。构造函数(即相同数量的参数,但它们具有不同的类型)解析它具有完整的类型注册集的那个。
运行我的引导程序时,在RegisterTypes
方法中抛出异常:
Additional information: Unspecified how to select single constructor for implementation type Nancy.ViewEngines.FileSystemViewLocationProvider with 2 public constructors.
在DryIoc实现中我需要做的事情可能非常简单,但我还没想到它。 如果有人有任何建议,请回复!
我目前的nancy bootstrapper实现:Bitbucket Snippet
答案 0 :(得分:1)
默认情况下,DryIoc期望单个公共构造函数注入依赖项。但它可以使用规则按容器自定义。根据您的情况,您可以自定义构造函数选择,如下所示:
var container = new Container(rules =>
rules.With(FactoryMethod.ConstructorWithResolvableArguments));
但是,如果为每个Container设置此行为可能过度,则可以将其设置为特定注册:
container.Register<IService, SomeService>(made: Made.Of(FactoryMethod.ConstructorWithResolvableArguments));
可以找到更完整的使用示例here。
<强>更新强>
Nancy集成包已经发布:Nancy.Bootstrappers.DryIoc