public void Dispose_RegistrationInstancesDisposed() { var builder = new ContainerBuilder(); builder.RegisterType<DisposeTracker>(); var container = builder.Build(); IComponentRegistration registration; container.ComponentRegistry.TryGetRegistration(new TypedService(typeof(DisposeTracker)), out registration); var context = new AutofacInstanceContext(container); var disposable = (DisposeTracker)context.ResolveComponent(registration, Enumerable.Empty<Parameter>()); Assert.IsFalse(disposable.IsDisposedPublic); context.Dispose(); Assert.IsTrue(disposable.IsDisposedPublic); }
public void Dispose_RegistrationInstancesDisposed() { var builder = new ContainerBuilder(); builder.RegisterType <DisposeTracker>(); var container = builder.Build(); IComponentRegistration registration; container.ComponentRegistry.TryGetRegistration(new TypedService(typeof(DisposeTracker)), out registration); var context = new AutofacInstanceContext(container); var disposable = (DisposeTracker)context.ResolveComponent(registration, Enumerable.Empty <Parameter>()); Assert.IsFalse(disposable.IsDisposedPublic); context.Dispose(); Assert.IsTrue(disposable.IsDisposedPublic); }
public void Dispose_InstancesDisposed() { var builder = new ContainerBuilder(); builder.RegisterType<DisposeTracker>(); var container = builder.Build(); var impData = new ServiceImplementationData() { ConstructorString = "TestService", ServiceTypeToHost = typeof(DisposeTracker), ImplementationResolver = l => l.Resolve<DisposeTracker>() }; var context = new AutofacInstanceContext(container); var disposable = (DisposeTracker)context.Resolve(impData); Assert.IsFalse(disposable.IsDisposedPublic); context.Dispose(); Assert.IsTrue(disposable.IsDisposedPublic); }
public void Dispose_InstancesDisposed() { var builder = new ContainerBuilder(); builder.RegisterType <DisposeTracker>(); var container = builder.Build(); var impData = new ServiceImplementationData() { ConstructorString = "TestService", ServiceTypeToHost = typeof(DisposeTracker), ImplementationResolver = l => l.Resolve <DisposeTracker>() }; var context = new AutofacInstanceContext(container); var disposable = (DisposeTracker)context.Resolve(impData); Assert.IsFalse(disposable.IsDisposedPublic); context.Dispose(); Assert.IsTrue(disposable.IsDisposedPublic); }
/// <summary> /// Returns a service object given the specified <see cref="T:System.ServiceModel.InstanceContext"/> object. /// </summary> /// <param name="instanceContext">The current <see cref="T:System.ServiceModel.InstanceContext"/> object.</param> /// <param name="message">The message that triggered the creation of a service object.</param> /// <returns>The service object.</returns> /// <exception cref="System.ArgumentNullException"> /// Thrown if <paramref name="instanceContext" /> is <see langword="null" />. /// </exception> public object GetInstance(InstanceContext instanceContext, Message message) { if (instanceContext == null) { throw new ArgumentNullException("instanceContext"); } var autofacInstanceContext = new AutofacInstanceContext(_rootLifetimeScope); instanceContext.Extensions.Add(autofacInstanceContext); try { return autofacInstanceContext.Resolve(_serviceData); } catch (Exception) { autofacInstanceContext.Dispose(); instanceContext.Extensions.Remove(autofacInstanceContext); throw; } }