StructureMap在Container类上有一个超级有用的调试方法,称为WhatDoIHave()
它显示了容器中的每种类型及其生命周期,GUID和其他信息。这对于调试很有用。
这里有一些信息:
http://jeremydmiller.com/2014/02/18/structuremap-3-is-gonna-tell-you-whats-wrong-and-where-it-hurts/
DryIOC是否具有等效的调试功能?
最佳答案
(我是DryIoc的创建者)。
您可以使用container.GetServiceRegistrations()
按照@ fyodor-soikin的建议获取注册信息。
但是在最新版本(2.0.0-rc3build339)中,我添加了VerifyResolutions
方法,该方法可以帮助您诊断潜在的解决问题,包括缺少注册。这里是维基explaining it。
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);
验证结果是
ServiceRegistrationInfo
和ContainerException
KeyValuePairs的数组。在此示例中,注册信息将为:MyNamespace.MyService注册为工厂{ID = 14,ImplType = MyNamespace.MyService}
唯一的例外是:
DryIoc.ContainerException:无法将MyNamespace.RequiredDependency解析为参数“ d”
在MyNamespace.MyService中。
没有找到服务注册的地方
和Rules.FallbackContainers的数量:0
和Rules.UnknownServiceResolvers的数量:0
更新:
最新的稳定版DryIoc 2.0.0中提供了该功能。