Содержимое контейнера DryIOC

В StructureMap есть супер-полезный метод отладки для класса Container, который называется WhatDoIHave ().

Он показывает каждый тип в контейнере, а также его жизненный цикл, руководство и множество другой информации. Это полезно для отладки.

Здесь есть некоторая информация:

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

Есть ли у DryIOC эквивалентная функция отладки?


person reach4thelasers    schedule 18.09.2015    source источник
comment
Есть способ GetServiceRegistrations. Это то, что вы ищете?   -  person Fyodor Soikin    schedule 19.09.2015


Ответы (1)


(Я создатель DryIoc).

Вы можете использовать container.GetServiceRegistrations() для получения регистрационной информации, как предложил @ fyodor-soikin.

Но в последней версии (2.0.0-rc3build339) я добавил VerifyResolutions метод, который может помочь вам диагностировать потенциальные проблемы разрешения, включая также отсутствующие регистрации. Здесь вики объясняет это .

Пример из вики:

// 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);

Убедитесь, что результатом является массив ServiceRegistrationInfo и ContainerException KeyValuePairs. В этом примере регистрационная информация будет следующей:

MyNamespace.MyService зарегистрирован как factory {ID = 14, ImplType = MyNamespace.MyService}

И исключением будут:

DryIoc.ContainerException: Невозможно разрешить MyNamespace.RequiredDependency как параметр «d» в MyNamespace.MyService.
Если регистрации службы не найдены,
и количество Rules.FallbackContainers: 0
и количество Rules.UnknownServiceResolvers: 0

Обновление:

Функциональность доступна в последней стабильной версии DryIoc 2.0.0.

person dadhi    schedule 26.10.2015