/// <summary> /// 添加依赖注入映射描述信息到服务映射信息集合中。 /// </summary> /// <param name="collection">服务映射信息集合。</param> /// <param name="serviceType">服务类型。</param> /// <param name="implementationInstance">服务实现实例。</param> /// <param name="lifetime">生命周期。</param> /// <returns></returns> public static IServiceCollection Add(this IServiceCollection collection, Type serviceType, object implementationInstance, LifetimeOption lifetime) { return(collection.TryAdd(ServiceDescriptor.Descriptor(serviceType, implementationInstance, lifetime))); }
/// <summary> /// 添加依赖注入映射描述信息到服务映射信息集合中。 /// </summary> /// <param name="collection">服务映射信息集合。</param> /// <param name="serviceType">服务类型。</param> /// <param name="implementationFactory">服务实现实例工厂。</param> /// <param name="lifetime">生命周期。</param> /// <returns></returns> public static IServiceCollection Add(this IServiceCollection collection, Type serviceType, Func <IServiceProvider, object> implementationFactory, LifetimeOption lifetime) { return(collection.TryAdd(ServiceDescriptor.Descriptor(serviceType, implementationFactory, lifetime))); }
/// <summary> /// 添加依赖注入映射描述信息。 /// </summary> /// <param name="collection">服务映射信息集合。</param> /// <param name="implementationTypes">服务实现类型序列。</param> /// <param name="lifetime">生命周期。</param> protected void AddTypeWithInterfaces(IServiceCollection collection, Type[] implementationTypes, LifetimeOption lifetime) { Type[] interfaceTypes; foreach (var implementationType in implementationTypes) { if (implementationType.IsAbstract || implementationType.IsInterface) { continue; } // interfaceTypes = GetImplementedInterfaces(implementationType); if (interfaceTypes.Length == 0) { collection.Add(implementationType, implementationType, lifetime); continue; } foreach (var interfaceType in interfaceTypes) { collection.Add(interfaceType, implementationType, lifetime); } } }
/// <summary> /// 添加依赖注入映射描述信息到服务映射信息集合中。 /// </summary> /// <typeparam name="TService">泛型服务类型。</typeparam> /// <typeparam name="TImplementation">泛型实现类型。</typeparam> /// <param name="collection">服务映射信息集合。</param> /// <param name="lifetime">生命周期。</param> /// <returns></returns> public static IServiceCollection Add <TService, TImplementation>(this IServiceCollection collection, LifetimeOption lifetime) where TService : class where TImplementation : TService { return(collection.TryAdd(ServiceDescriptor.Descriptor <TService, TImplementation>(lifetime))); }
/// <summary> /// 初始化一个<see cref="ServiceDescriptor"/>类型的新实例。 /// </summary> /// <param name="serviceType">服务类型。</param> /// <param name="implementationFactory">服务实现实例工厂。</param> /// <param name="lifetime">生命周期。</param> public ServiceDescriptor(Type serviceType, Func <IServiceProvider, object> implementationFactory, LifetimeOption lifetime) : this(serviceType, lifetime) { ImplementationFactory = implementationFactory; }
/// <summary> /// 初始化一个<see cref="ServiceDescriptor"/>类型的新实例。 /// </summary> /// <param name="serviceType">服务类型。</param> /// <param name="lifetime">生命周期。</param> private ServiceDescriptor(Type serviceType, LifetimeOption lifetime) { Lifetime = lifetime; ServiceType = serviceType; }
/// <summary> /// 创建依赖注入映射描述信息。 /// </summary> /// <param name="serviceType">服务类型。</param> /// <param name="implementationFactory">服务实现实例工厂。</param> /// <param name="lifetime">生命周期。</param> /// <returns></returns> public static ServiceDescriptor Descriptor(Type serviceType, Func <IServiceProvider, object> implementationFactory, LifetimeOption lifetime) { return(new ServiceDescriptor(serviceType, implementationFactory, lifetime)); }
/// <summary> /// 创建依赖注入映射描述信息。 /// </summary> /// <param name="serviceType">服务类型。</param> /// <param name="implementationInstance">服务实现实例。</param> /// <param name="lifetime">生命周期。</param> /// <returns></returns> public static ServiceDescriptor Descriptor(Type serviceType, object implementationInstance, LifetimeOption lifetime) { return(new ServiceDescriptor(serviceType, implementationInstance, lifetime)); }
/// <summary> /// 创建依赖注入映射描述信息。 /// </summary> /// <typeparam name="TService">泛型服务类型。</typeparam> /// <typeparam name="TImplementation">泛型实现类型。</typeparam> /// <param name="lifetime">生命周期。</param> /// <returns></returns> public static ServiceDescriptor Descriptor <TService, TImplementation>(LifetimeOption lifetime) where TService : class where TImplementation : TService { return(Descriptor(typeof(TService), typeof(TImplementation), lifetime)); }
/// <summary> /// 初始化一个<see cref="ServiceDescriptor"/>类型的新实例。 /// </summary> /// <param name="serviceType">服务类型。</param> /// <param name="implementationInstance">服务实现实例。</param> /// <param name="lifetime">生命周期。</param> public ServiceDescriptor(Type serviceType, object implementationInstance, LifetimeOption lifetime) : this(serviceType, lifetime) { ImplementationInstance = implementationInstance; }
/// <summary> /// 初始化一个<see cref="ServiceDescriptor"/>类型的新实例。 /// </summary> /// <param name="serviceType">服务类型。</param> /// <param name="implementationType">服务实现类型。</param> /// <param name="lifetime">生命周期。</param> public ServiceDescriptor(Type serviceType, Type implementationType, LifetimeOption lifetime) : this(serviceType, lifetime) { ImplementationType = implementationType; }