public void Enumerable_DisposesInReverseOrderOfCreation() { FakeDisposeCallback fake_callback = new FakeDisposeCallback(); IFakeDisposableCallbackService[] list; using (IUnityContainer provider = new UnityContainer()) { // Arrange provider.RegisterInstance(fake_callback); provider.RegisterType <IFakeDisposableCallbackService, FakeDisposableCallbackService>("1", new ContainerControlledLifetimeManager()); provider.RegisterType <IFakeDisposableCallbackService, FakeDisposableCallbackService>("2", new HierarchicalLifetimeManager()); provider.RegisterType <IFakeDisposableCallbackService, FakeDisposableCallbackService>("3", new HierarchicalTransientLifetimeManager()); provider.RegisterType <IFakeDisposableCallbackService, FakeDisposableCallbackService>("4", new ContainerControlledLifetimeManager()); list = provider.ResolveAll <IFakeDisposableCallbackService>().ToArray(); for (var i = 0; i < list.Length; i++) { Assert.AreEqual(i, list[i].ID); } } // Act // Assert for (var i = 0; i < list.Length; i++) { Assert.AreEqual(list[list.Length - 1 - i].ID, ((IFakeDisposableCallbackService)fake_callback.Disposed[i]).ID); } }
public FakeDisposableCallbackOuterServiceFixed( IFakeService singleService, IEnumerable <IFakeMultipleService> multipleServices, FakeDisposeCallback callback) : base(callback) { SingleService = singleService; MultipleServices = multipleServices.ToArray(); }
public FakeDisposableCallbackInnerService(FakeDisposeCallback callback) : base(callback) { }
public FakeDisposableCallbackService(FakeDisposeCallback callback) { _id = _globalId++; _callback = callback; }
public Singleton5(FakeDisposeCallback fakeDisposeCallback) : base(fakeDisposeCallback) { }
public Singleton1(FakeDisposeCallback fakeDisposeCallback) { this.fakeDisposeCallback = fakeDisposeCallback; }
public void EmitsCallSiteBuiltEvent() { // Arrange var serviceCollection = new ServiceCollection(); var fakeDisposeCallback = new FakeDisposeCallback(); serviceCollection.AddSingleton(fakeDisposeCallback); serviceCollection.AddTransient <IFakeOuterService, FakeDisposableCallbackOuterService>(); serviceCollection.AddSingleton <IFakeMultipleService, FakeDisposableCallbackInnerService>(); serviceCollection.AddSingleton <IFakeMultipleService>(provider => new FakeDisposableCallbackInnerService(fakeDisposeCallback)); serviceCollection.AddScoped <IFakeMultipleService, FakeDisposableCallbackInnerService>(); serviceCollection.AddTransient <IFakeMultipleService, FakeDisposableCallbackInnerService>(); serviceCollection.AddSingleton <IFakeService, FakeDisposableCallbackInnerService>(); serviceCollection.BuildServiceProvider().GetService <IEnumerable <IFakeOuterService> >(); var callsiteBuiltEvent = _listener.EventData.Single(e => e.EventName == "CallSiteBuilt"); Assert.Equal( string.Join(Environment.NewLine, "{", " \"serviceType\": \"System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeOuterService]\",", " \"kind\": \"IEnumerable\",", " \"cache\": \"None\",", " \"itemType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeOuterService\",", " \"size\": \"1\",", " \"items\": [", " {", " \"serviceType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeOuterService\",", " \"kind\": \"Constructor\",", " \"cache\": \"Dispose\",", " \"implementationType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposableCallbackOuterService\",", " \"arguments\": [", " {", " \"serviceType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService\",", " \"kind\": \"Constructor\",", " \"cache\": \"Root\",", " \"implementationType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposableCallbackInnerService\",", " \"arguments\": [", " {", " \"serviceType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposeCallback\",", " \"kind\": \"Constant\",", " \"cache\": \"None\",", " \"value\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposeCallback\"", " }", " ]", " },", " {", " \"serviceType\": \"System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeMultipleService]\",", " \"kind\": \"IEnumerable\",", " \"cache\": \"None\",", " \"itemType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeMultipleService\",", " \"size\": \"4\",", " \"items\": [", " {", " \"serviceType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeMultipleService\",", " \"kind\": \"Constructor\",", " \"cache\": \"Root\",", " \"implementationType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposableCallbackInnerService\",", " \"arguments\": [", " {", " \"ref\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposeCallback\"", " }", " ]", " },", " {", " \"serviceType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeMultipleService\",", " \"kind\": \"Factory\",", " \"cache\": \"Root\",", " \"method\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeMultipleService <EmitsCallSiteBuiltEvent>b__0(System.IServiceProvider)\"", " },", " {", " \"serviceType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeMultipleService\",", " \"kind\": \"Constructor\",", " \"cache\": \"Scope\",", " \"implementationType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposableCallbackInnerService\",", " \"arguments\": [", " {", " \"ref\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposeCallback\"", " }", " ]", " },", " {", " \"serviceType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeMultipleService\",", " \"kind\": \"Constructor\",", " \"cache\": \"Dispose\",", " \"implementationType\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposableCallbackInnerService\",", " \"arguments\": [", " {", " \"ref\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposeCallback\"", " }", " ]", " }", " ]", " },", " {", " \"ref\": \"Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposeCallback\"", " }", " ]", " }", " ]", "}"), JObject.Parse(GetProperty <string>(callsiteBuiltEvent, "callSite")).ToString()); Assert.Equal("System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeOuterService]", GetProperty <string>(callsiteBuiltEvent, "serviceType")); Assert.Equal(0, GetProperty <int>(callsiteBuiltEvent, "chunkIndex")); Assert.Equal(1, GetProperty <int>(callsiteBuiltEvent, "chunkCount")); Assert.Equal(1, callsiteBuiltEvent.EventId); }