// when registering an unbound target, we also automatically register // a projection for the delegate type which is fed by an enumerable of the return // type of the delegate. So IEnumerable<Func<Foo>> <== IEnumerable<Foo> void INotifyRegistrationTarget.OnRegistration(IRootTargetContainer root, Type registeredType) { if (this.BoundTarget == null) { root.RegisterProjection(ReturnType, registeredType, CreateTarget); } AutoFactoryTarget CreateTarget(IRootTargetContainer root2, ITarget source) => new AutoFactoryTarget(registeredType, ReturnType, ParameterTypes, source); }