private static void Register(this ContainerBuilder builder, Registration registration) { if (registration.ImplementationType != null) { builder.RegisterType(registration.ImplementationType).As(registration.InterfaceType); } else if (registration.ImplementationFactory != null) { builder.Register(ctx => registration.ImplementationFactory()).As(registration.InterfaceType); } else { var message = "No type or factory found on registration " + registration.GetType().FullName; Logger.Error(message); throw new InvalidOperationException(message); } }
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); } }