4

StructureMap には、コンテナ クラスに WhatDoIHave() という非常に便利なデバッグ メソッドがあります。

ライフサイクル、GUID、その他の情報とともに、コンテナ内のすべてのタイプが表示されます。デバッグに便利です。

ここにいくつかの情報があります:

http://jeremydmiller.com/2014/02/18/structuremap-3-is-gonna-tell-you-whats-wrong-and-where-it-hurts/

DryIOC には同等のデバッグ機能がありますか?

4

1 に答える 1

2

(私はDryIocの作成者です)。

container.GetServiceRegistrations()@fyodor-soikin が提案したように、登録情報を取得するために使用できます。

しかし、最新バージョン ( 2.0.0-rc3build339VerifyResolutions )では、登録の欠落など、潜在的な解決の問題を診断するのに役立つメソッドを追加しました。ここでそれを説明するウィキ。

ウィキからの例:

// Given following SUT
public class RequiredDependency {}
public class MyService { public MyService(RequiredDependency d) {} }

// Let's assume we forgot to register RequiredDependency
var container = new Container();
container.Register<MyService>();

// Find what's missing
var results = container.VerifyResolutions();
Assert.AreEqual(1, results.Length);

結果がKeyValuePairsの配列であることを確認ServiceRegistrationInfoします。ContainerExceptionこの例では、登録情報は次のようになります。

ファクトリ {ID=14, ImplType=MyNamespace.MyService} として登録された MyNamespace.MyService

例外は次のとおりです。

DryIoc.ContainerException: MyNamespace.MyService のパラメーター "d" として MyNamespace.RequiredDependency を解決できません。
サービス登録が見つからず、Rules.FallbackContainers の数
: 0
および Rules.UnknownServiceResolvers の数: 0

アップデート:

この機能は、最新の安定版 DryIoc 2.0.0で利用できます。

于 2015-10-26T08:30:04.320 に答える