1

DryIoc (v2.0 プレビュー) 用の nancy ブートストラップを作成しようとしています。一般に、ほとんどのことは単純に見えますが、DryIoc は、Nancy がブートストラップのために依存しているものの 1 つを明らかにサポートしていないようです。

組み込みの tinyioc コンテナーは、2 つの「同じ長さ」のコンストラクター (つまり、引数の数は同じですが、型が異なる) を持つ型に直面すると、型登録の完全なセットを持つものを解決します。

ブートストラップを実行すると、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 に答える