Search code examples
dryioc

DryIOC Container Contents


StructureMap has a super-useful debug method on the Container class called WhatDoIHave()

It shows every type in the container along with its lifecycle, guid and a bunch of other info. It's useful for debugging.

There's some info here:

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

Does DryIOC have an equivalent debug feature?


Solution

  • (I'm the creator of DryIoc).

    You can use container.GetServiceRegistrations() to get registration infos as @fyodor-soikin suggested.

    But at the latest version (2.0.0-rc3build339) I have added VerifyResolutions method that may help you to diagnose potential resolution problems, including missing registrations as well. Here the wiki explaining it.

    Example from the wiki:

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

    Verify result is array of ServiceRegistrationInfo and ContainerException KeyValuePairs. In this example the registration info will be:

    MyNamespace.MyService registered as factory {ID=14, ImplType=MyNamespace.MyService}

    And the exception will be:

    DryIoc.ContainerException: Unable to resolve MyNamespace.RequiredDependency as parameter "d" in MyNamespace.MyService.
    Where no service registrations found
    and number of Rules.FallbackContainers: 0
    and number of Rules.UnknownServiceResolvers: 0

    Update:

    The functionality is available in latest stable DryIoc 2.0.0.