在 DependencyInjection项目代码分析4-微软的实现(1)中介绍了“ServiceTable”、“ServiceEntry”、“IGenericService”、“IService”、“IServiceCallSite”,这篇介绍下“IGenericService、"IService"、"IServiceCallSite"实现类
GenericService类
做为IGenericService的唯一实现类,该类言简意赅,请看代码:
internal class GenericService : IGenericService { private readonly ServiceDescriptor _descriptor; public GenericService(ServiceDescriptor descriptor) { _descriptor = descriptor; } public ServiceLifetime Lifetime { get { return _descriptor.Lifetime; } } public IService GetService(Type closedServiceType) { Type[] genericArguments = closedServiceType.GetTypeInfo().GenericTypeArguments; Type closedImplementationType = _descriptor.ImplementationType.MakeGenericType(genericArguments); var closedServiceDescriptor = new ServiceDescriptor(closedServiceType, closedImplementationType, Lifetime); return new Service(closedServiceDescriptor); } }