namespace ConsoleApplication22
public Foo(IDependency1 d1, IDependency2 d2, IDependency3 d3)
interface IDependency1 { }
interface IDependency2 { }
interface IDependency3 { }
class Dependency2 : IDependency2 { }
public static void Main(string[] args)
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<Foo>().As<IFoo>();
builder.RegisterType<Dependency2>().As<IDependency2>();
IContainer container = builder.Build();
container.ResolveOperationBeginning += (sender, e) =>
IComponentRegistration registration = null;
e.ResolveOperation.InstanceLookupBeginning += (sender2, e2) =>
registration = e2.InstanceLookup.ComponentRegistration;
e.ResolveOperation.CurrentOperationEnding += (sender2, e2) =>
if (e2.Exception != null)
ConstructorInfo ci = registration.Activator.LimitType.GetConstructors().First();
StringBuilder sb = new StringBuilder();
sb.AppendLine(String.Format("Can't instanciate {0}", registration.Activator.LimitType));
foreach (ParameterInfo pi in ci.GetParameters())
if (!((ILifetimeScope)sender).IsRegistered(pi.ParameterType))
sb.AppendLine(String.Format("\t{0} {1} is not registered", pi.ParameterType, pi.Name));
throw new DependencyResolutionException(sb.ToString(), e2.Exception);
container.Resolve<IFoo>();