1

我正在尝试为 DryIoc(v2.0 预览版)创建一个 nancy 引导程序。一般来说,大多数事情看起来都很简单,但是 DryIoc 似乎并不明显支持 Nancy 所依赖的引导程序之一。

当面对具有两个“相同长度”构造函数(即相同数量的参数,但它们属于不同类型)的类型时,内置的 tinyioc 容器将解析它具有完整类型注册集的那个。

运行我的引导程序时,在该RegisterTypes方法中引发异常:

Additional information: Unspecified how to select single constructor for implementation type Nancy.ViewEngines.FileSystemViewLocationProvider with 2 public constructors.

在我的 DryIoc 实现中我需要做的可能很简单,但我还没有弄清楚。如果有人有什么建议,请回复!

我当前的 nancy 引导程序实现:Bitbucket Snippet

4

1 回答 1

1

默认情况下,DryIoc 期望单个公共构造函数注入依赖项。但它可以使用规则为每个容器定制。鉴于您的情况,您可以自定义构造函数选择,如下所示:

var container = new Container(rules => 
    rules.With(FactoryMethod.ConstructorWithResolvableArguments));

但是,如果为每个容器设置此行为可能有点过分,您可以将其设置为特定注册:

container.Register<IService, SomeService>(made: Made.Of(FactoryMethod.ConstructorWithResolvableArguments));

更完整的使用示例可以在这里找到。

更新:

Nancy 集成包已发布:Nancy.Bootstrappers.DryIoc

于 2015-03-23T07:42:36.890 回答