public void CallSiteFactoryResolvesIEnumerableOfOpenGenericServiceAfterResolvingClosedImplementation() { IServiceCollection descriptors = new ServiceCollection(); descriptors.Add(ServiceDescriptor.Scoped(typeof(IFakeOpenGenericService <int>), typeof(FakeIntService))); descriptors.Add(ServiceDescriptor.Scoped(typeof(IFakeOpenGenericService <>), typeof(FakeOpenGenericService <>))); ServiceProvider provider = descriptors.BuildServiceProvider(); IFakeOpenGenericService <int> processor = provider.GetService <IFakeOpenGenericService <int> >(); IEnumerable <IFakeOpenGenericService <int> > processors = provider.GetService <IEnumerable <IFakeOpenGenericService <int> > >(); Type[] implementationTypes = processors.Select(p => p.GetType()).ToArray(); Assert.Equal(typeof(FakeIntService), processor.GetType()); Assert.Equal(2, implementationTypes.Length); Assert.Equal(typeof(FakeIntService), implementationTypes[0]); Assert.Equal(typeof(FakeOpenGenericService <int>), implementationTypes[1]); }
public TypeWithGenericServices( IFakeService fakeService, IFactoryService factoryService, IFakeOpenGenericService <IFakeService> logger) { }
public TypeWithGenericServices( IFakeService fakeService, IFactoryService factoryService, IFakeOpenGenericService<IFakeService> logger) { }