public void RegisterFactory_FactoryInvokesFunc() { var wasCalled = false; Func<IDependencyResolver, object> f = (resolver) => { wasCalled = true; return new object(); }; var reg = new Registration<object>(f); var result = reg.Factory(null); wasCalled.Should().BeTrue(); }
private static void Register(this ContainerBuilder builder, Registration registration, string name = null) { if (registration.Instance != null) { var reg = builder.Register(ctx => registration.Instance).SingleInstance(); if (name != null) { reg.Named(name, registration.DependencyType); } else { reg.As(registration.DependencyType); } } else if (registration.Type != null) { var reg = builder.RegisterType(registration.Type); if (name != null) { reg.Named(name, registration.DependencyType); } else { reg.As(registration.DependencyType); } } else if (registration.Factory != null) { var reg = builder.Register(ctx => registration.Factory(new AutofacDependencyResolver(ctx))); if (name != null) { reg.Named(name, registration.DependencyType); } else { reg.As(registration.DependencyType); } } else { var message = "No type or factory found on registration " + registration.GetType().FullName; Logger.Error(message); throw new InvalidOperationException(message); } }